[英]PHP GD imagecopyresampled() and flip it horizontal
我正在使用 imagecopyresampled() 从另一个 PNG 图像渲染 PNG 图像。 现在我希望图像的某些部分水平翻转,所以我试过这个:
//horizontal
$src_x = $width - 1;
$src_width = -$width;
imagecopyresampled(
$imgdest, $imgsrc, 0, 0, $src_x, $src_y , $width, $height
, $src_width, $src_height
);
取自PHP 手册的用户评论。
它在我的情况下不起作用(我从原始图像复制了很多片段到新图像),而是复制了另一幅图像。 有没有人有解决方案?
我知道这有点晚了,但我自己也在寻找这个解决方案,只是找到了所需的代码......
function image_flip($img, $type=''){
$width = imagesx($img);
$height = imagesy($img);
$dest = imagecreatetruecolor($width, $height);
switch($type){
case '':
return $img;
break;
case 'vert':
for($i=0;$i<$height;$i++){
imagecopy($dest, $img, 0, ($height - $i - 1), 0, $i, $width, 1);
}
break;
case 'horiz':
for($i=0;$i<$width;$i++){
imagecopy($dest, $img, ($width - $i - 1), 0, $i, 0, 1, $height);
}
break;
case 'both':
for($i=0;$i<$width;$i++){
imagecopy($dest, $img, ($width - $i - 1), 0, $i, 0, 1, $height);
}
$buffer = imagecreatetruecolor($width, 1);
for($i=0;$i<($height/2);$i++){
imagecopy($buffer, $dest, 0, 0, 0, ($height - $i -1), $width, 1);
imagecopy($dest, $dest, 0, ($height - $i - 1), 0, $i, $width, 1);
imagecopy($dest, $buffer, 0, $i, 0, 0, $width, 1);
}
imagedestroy($buffer);
break;
}
return $dest;
}
好吧,在我自己找到答案多年之后,我只想让其他人知道。
这很简单,例如:
代替:
imagecopy($output, $input, 8, 20, 4, 20, 4, 12)
我会用:
imagecopyresampled($output, $input, 8, 20, (8 - 1), 20, 4, 12, 0 - 4, 12);
这将水平翻转图像的一部分。
我用那个:
imageflip ( resource $image , int $mode ) : bool
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.