|
|
|
| возможно ли средствами пхп сделать такое:
есть изображение png с прозрачными областями.нужно с четырех краев обрезать строки и столбцы, в которых только прозрхчные пиксели.
пример в аттаче: из изображения 190*218 получить 80*67 | |
|
|
|
|
|
|
|
для: AlexSol
(29.12.2006 в 19:59)
| | Насколько я помню, GD не позволяет работать с прозрачными изображениями.
Хотя может я ошибаюсь. | |
|
|
|
|
|
|
|
для: ddhvvn
(29.12.2006 в 20:05)
| | склеить два png у которых есть прозрачные/полупрозрачные области можно, а вот как отследить что этот пиксель прозрачен и произвести обрезание я не знаю... | |
|
|
|
|
|
|
|
для: AlexSol
(29.12.2006 в 20:19)
| | Нашел только как задать прозрачный цвет - через функцию imagecolortransparent. | |
|
|
|
|
|
|
|
для: AlexSol
(29.12.2006 в 19:59)
| | Прозрачный белый цвет имеет индекс 2147483647. Его можно получить функцией imagecolorat(). Нужно в цикле перебирать все строки и обрывать цикл, если в этой строке есть цвет, отличный от 2147483647. Эта строка и будет началом рисунка. А всё, что сверху - прозрачная область. | |
|
|
|
|
1.5 Кб |
|
|
для: AlexSol
(29.12.2006 в 19:59)
| | Например так. | |
|
|
|
|
|
|
|
для: /|\';..;'/|\
(29.12.2006 в 22:44)
| | загвоздка в определение - прозрачен цвет или нет. ImageColorAt для прозрачного и для белого выдают 2147483647.
есть ли другой способ понять прозрачен пиксель или нет? | |
|
|
|
|
|
|
|
для: AlexSol
(01.01.2007 в 11:07)
| | вот еще вопрос: если делать изображение на основе чего-то , то работает. а если создавать новое - то нет.
это работает:
header("Content-type: image/png");
$string = 'test';
$im = imagecreatefrompng("images/kub.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
|
а это нет уже
header ("Content-type: image/png");
$im = imagecreatetruecolor(50, 100);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "A Simple Text String", $text_color);
imagepng($im);
imagedestroy($im);
|
-рисует область под размер изображения с крестиком в углу. | |
|
|
|
|
|
|
|
для: AlexSol
(01.01.2007 в 14:56)
| |
<?
header("Content-type: image/png");
$string = 'test';
$im = imagecreatetruecolor(100, 100);
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
| Так работает? | |
|
|
|
|
|
|
|
для: AlexSol
(01.01.2007 в 11:07)
| | > ImageColorAt для прозрачного и для белого выдают 2147483647.
Нет. Прикрепляю пример. Пиксел (0, 0) белый, (0, 1) прозрачный.
<?
$im = imagecreatefrompng("samp.png");
print imagecolorat($im, 0, 0)."<br/>";
print imagecolorat($im, 0, 1);
|
Пиксел прозрачен (полупрозрачен), если его код > 16777215. А 16777215 - это белый цвет.
Однако же мой скрипт выполнил поставленную задачу. | |
|
|
|
|
|
|
|
для: /|\';..;'/|\
(02.01.2007 в 01:12)
| | спасибо, разобрался. | |
|
|
|