所以我使用imagecreate
获得了一个3x3像素的图像。我想用imagescale
放大图像,同时保持3x3网格“像素”的外观。但是,右边缘和底边的像素大小不同。
这是我的代码和输出图像:
<?php
$image = imagecreate(3, 3);
imagecolorallocate($image, 0, 0, 255);
$red = imagecolorallocate($image, 255, 0, 0);
imagesetpixel($image, 0, 0, $red);
imagesetpixel($image, 1, 1, $red);
imagesetpixel($image, 2, 2, $red);
imagepng(imagescale($image, 200, 200, IMG_NEAREST_NEIGHBOUR));
header("Content-Type: image/png");
这是我的输出:
注意右下角像素是如何被切断的。我一直在玩新尺寸的数字并达到256x256,此时像素的大小都相同。
这是使用256x256后的输出:
我的问题是:如何使用我描述的效果导出用于调整大小的图像的尺寸?
奖金问题:是一种替代方法,可以让我调整到任意大小并保持像素大小相同吗?
答案 0 :(得分:1)
我会使用imagecopyresampled来实现这一目标。
http://php.net/manual/en/function.imagecopyresampled.php
<?php
$width = 3;
$height = 3;
$image = imagecreate($width, $height);
imagecolorallocate($image, 0, 0, 255);
$red = imagecolorallocate($image, 255, 0, 0);
imagesetpixel($image, 0, 0, $red);
imagesetpixel($image, 1, 1, $red);
imagesetpixel($image, 2, 2, $red);
$new_width = 200;
$new_height = 200;
$dst = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($dst, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagepng($dst);
header("Content-Type: image/png");