在PHP - 从图像创建一个图像中找到了一些代码,但是该代码可以工作,但是当我查看输出时,每个图像的边缘质量极低(块状)。
这是我正在使用的代码,将原始代码转换为 webp 图像。
$images = array(
"image1.webp",
"image2.webp"
);
$number_of_images = count($images);
$priority = "columns"; // also "rows"
if ($priority == "rows") {
$rows = 3;
$columns = $number_of_images/$rows;
$columns = (int) $columns; // typecast to int. and makes sure grid is even
} elseif ($priority == "columns") {
$columns = 1;
$rows = $number_of_images/$columns;
$rows = (int) $rows; // typecast to int. and makes sure grid is even
}
$width = 1000; // image width
$height = 406; // image height
$background = imagecreatetruecolor(($width*$columns), ($height*$rows)); // setting canvas size
$output_image = $background;
// Creating image objects
$image_objects = array();
for($i = 0; $i < ($rows * $columns); $i++){
$image_objects[$i] = imagecreatefromwebp($images[$i]);
}
// Merge Images
$step = 0;
for($x = 0; $x < $columns; $x++) {
for($y = 0; $y < $rows; $y++) {
imagecopymerge($output_image, $image_objects[$step], ($width * $x), ($height * $y), 0, 0, $width, $height, 100);
$step++; // steps through the $image_objects array
}
}
imagewebp($output_image, "test.webp");
imagedestroy($output_image);
print "<div><img src='test.webp' /></div>";
这是输出...
我不知道为什么图像的边缘渲染得如此糟糕。
需要注意的是,原图是webp格式并且具有透明度。
如有任何帮助,我们将不胜感激。
尝试过各种文件格式,不同的功能
我不知道为什么图像的边缘渲染得如此糟糕。
请仔细检查原始输入图像,如果它们显示相同,则为输入质量。如果输入的质量已经很低,那么后续处理的输出就无法神奇地获得更好的质量。
提示:您所说的图像边缘的块状(更好:形状)以及您想要防止的,是您想要具有抗锯齿。这通常是调整图像大小时的关键点。
注意:如果您使用具有透明度的图像,则它实际上是多个图像,一个包含图像数据(图片),另一个包含显示图像数据(蒙版)。根据您想要对整体图像数据执行的操作,您必须牢记这一点,以便能够区分是否需要此功能。