将水印放入图像中。使用php的imagefttext()
函数,可以增加图像的大小。
可以通过任何方式解决此问题吗?
实际结果:-图片原始大小:-10.8 MB
此过程后:-新图片大小:-37.9 MB
`$ text =“ Afrophoto”;
$ font_file ='timesnewarial.ttf';
//创建新图像
$ newImg = imagecreatefromjpeg($ image);
//将水印字体颜色设置为红色
$ fontColor = imagecolorallocate($ newImg,255,255,255);
list($ width,$ height)= getimagesize($ image);
$ fontSize = $ width / 100;
//在创建的图像上写水印
for($ i = 15; $ i <=($ height); $ i + =($ height / 10)){
for($ j = 15; $ j <=($ width); $ j + =($ width / 10)){
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);`
答案 0 :(得分:0)
我在这里使用了Png图片
实际大小为banned.png:53.2KB
带有水印bbimage_3.png:40.8 KB
<?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);
?>
图像复制::此功能通过覆盖目标图像像素将源图像复制到目标图像上。
在合并带有透明背景作为水印的png图像时,imagecopymerge()函数将不会保留目标上的透明性。因此,最好使用imagecopy()进行图像水印处理。