php gdimage 图像蒙太奇质量差问题

问题描述 投票:0回答:1

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格式并且具有透明度。

如有任何帮助,我们将不胜感激。

尝试过各种文件格式,不同的功能

php image image-processing
1个回答
0
投票

我不知道为什么图像的边缘渲染得如此糟糕。

请仔细检查原始输入图像,如果它们显示相同,则为输入质量。如果输入的质量已经很低,那么后续处理的输出就无法神奇地获得更好的质量。


提示:您所说的图像边缘的块状(更好:形状)以及您想要防止的,是您想要具有抗锯齿。这通常是调整图像大小时的关键点。


注意:如果您使用具有透明度的图像,则它实际上是多个图像,一个包含图像数据(图片),另一个包含显示图像数据(蒙版)。根据您想要对整体图像数据执行的操作,您必须牢记这一点,以便能够区分是否需要此功能。


© www.soinside.com 2019 - 2024. All rights reserved.