Функция imagefttext () (php) увеличивает размер изображения - PullRequest
0 голосов
/ 15 апреля 2019

Помещение водяного знака в изображение.Используя imagefttext() функцию php, он увеличивает размер изображения.

Как решить эту проблему?

Фактические результаты : - Исходный размер изображения: -10,8 МБ

После этого процесса : - Размер нового изображения: - 37,9 МБ

`$ text =" Afrophoto ";

$ font_file = 'timesnewarial.ttf ';

// создать новое изображение

$ newImg = imagecreatefromjpeg ($ image);

// установить цвет шрифта водяного знака на красный

$ fontColor = imagecolorallocate ($ newImg, 255, 255, 255);

список ($ width, $ height) = getimagesize ($ image);

$ fontSize = $ width/ 100;

// написать водяной знак на созданном изображении

для ($ i = 15; $ i <= ($ height); $ i + = ($ height / 10)){</p>

для ($ j = 15; $ j <= ($ width); $ j + = ($ width / 10)) {</p>

imagefttext ($ newImg, $ fontSize, 50,$ j, $ i, $ fontColor, $ font_file, $ text);

}

}

// вывести новое изображение с водяным знаком в файл

imagejpeg ($ newImg, "uploads /".$_ FILES [$ field] ['name'], 100);

imagepng ($ newImg," uploads /".$_ FILES [$ field] ['name']. ". png");

imagedestroy ($ newImg); `

1 Ответ

0 голосов
/ 15 апреля 2019

Здесь я использовал изображение PNG

Фактический размер banned.png: 53,2 КБ

с водяным знаком bbimage_3.png: 40,8 КБ

<?php
$imageURL = "banned.png";
list($width,$height) = getimagesize($imageURL);
$imageProperties = imagecreatetruecolor($width, $height);
$targetLayer = imagecreatefrompng($imageURL);
imagecopyresampled($imageProperties, $targetLayer, 0, 0, 0, 0, $width, $height, $width, $height);
$WaterMarkText = 'CONFIDENTIAL';
$watermarkColor = imagecolorallocate($imageProperties, 191,191,191);
imagestring($imageProperties, 5, 130, 117, $WaterMarkText, $watermarkColor);
imagepng($imageProperties, 'bbimage_3.png');
header('Content-type: image/jpeg');
imagepng ($imageProperties);
imagedestroy($targetLayer);
imagedestroy($imageProperties);
?>

imagecopy: Эта функция копирует исходное изображение в конечное изображение путем перезаписи пикселей конечного изображения.

При объединении изображений png с прозрачным фоном в качестве водяного знака функция imagecopymerge ()не сохранит прозрачность в месте назначения.Итак, imagecopy () предпочтительнее для водяных знаков изображений.

...