我试图重新创建一个用JavaScript制作的脚本;它通过改变每个像素位置来弯曲图像。我目前正在尝试将其移植到PHP,除非在检索像素和设置它们时,它没有正确显示(我目前不更改像素位置)。以下是我的尝试:
In [13]: parser.parse_args(['b'])
Out[13]: Namespace(cmd='b')
In [14]: parser.parse_args(['c'])
Out[14]: Namespace(cmd='c')
In [15]: parser.parse_args(['a','1'])
Out[15]: Namespace(a='1', cmd='a')
在这里你可以看到(出于测试目的)我正在使用Google的徽标,并且我试图逐个像素地重新绘制它。以下是结果。由于某种原因,它只生成图像的一小部分..任何想法?
修改
这是解决方案。由于使用<?php
header ('Content-Type: image/png');
$url = "https://www.google.co.uk/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
list($width, $height, $type, $attr) = getimagesize($url);
$original = imagecreatefrompng($url); //Google's logo
$image = imagecreate($width, $height); // our new image
//loop through all pixels..
for ($x = 0;$x<$width;$x++){
for ($y = 0;$y<$height;$y++){
$rgb = imagecolorat($original, $x,$y); //get colour data from $x $y coordinates
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
imagesetpixel($image,$x,$y,imagecolorallocate($image,$r,$g,$b));
//set pixel data on our new image at the same location with the same data
}
}
//retain a PNG's transparency
imagecolortransparent($image, imagecolorallocatealpha($image, 0, 0, 0, 127));
imagealphablending($image, false);
imagesavealpha($image, true);
imagepng($image);
imagedestroy($image);
imagedestroy($original);
?>
不支持透明度,我首先使用白色矩形填充图像(如果有透明度解决方案,请创建答案)。
imagecreatetruecolor()