Таким образом, у меня есть 3×3 пикселей изображения с помощью imagecreate
, Я хочу увеличить изображение с imagescale
сохраняя вид 3×3 сетки «пикселей». Однако пиксели на правом и нижнем краях имеют разный размер.
Вот мой код и выходное изображение:
<?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");
Это мой вывод:
Обратите внимание, как обрезается нижний правый пиксель. Я продолжал играть с числами для новых измерений и достиг 256×256, и в этот момент все пиксели были одинакового размера.
Это вывод после использования 256×256:
У меня вопрос: как я могу получить размеры для использования с измененным размером изображения с эффектом, который я описал?
Дополнительный вопрос: это альтернативный метод, который позволит мне изменить размер до произвольного размера и сохранить пиксели примерно одинакового размера?
Я бы использовал 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");
Других решений пока нет …