以下PHP代码段使用GD将浏览器上传的PNG大小调整为128x128.它的效果很好,除了原始图像中的透明区域在我的情况下被替换为纯黑色.
虽然imagesavealpha已经确定,但事情并不完全正确.
保留重采样图像透明度的最佳方法是什么?
$uploadTempFile = $myField[ 'tmp_name' ]
list( $uploadWidth, $uploadHeight, $uploadType )
= getimagesize( $uploadTempFile );
$srcImage = imagecreatefrompng( $uploadTempFile );
imagesavealpha( $targetImage, true );
$targetImage = imagecreatetruecolor( 128, 128 );
imagecopyresampled( $targetImage, $srcImage,
0, 0,
0, 0,
128, 128,
$uploadWidth, $uploadHeight );
imagepng( $targetImage, 'out.png', 9 );
Run Code Online (Sandbox Code Playgroud) 是否有一种相当直接的方法将圆形区域从一个图像资源复制到另一个图像资源?像imagecopymerge之类的东西,除了圆圈或椭圆形等?
如果可能的话,我想避免使用预先创建的图像文件(任何椭圆形状应该是可能的),如果涉及透明度颜色,他们应该自然地留下图像的其余部分.
原因我问,我有一些类允许在图像的"选定区域"内应用图像操作,其工作方式是首先从图像副本中删除该区域,然后将副本重叠在原始图像上.但是如果你想选择一个矩形,然后在里面取消选择一个圆圈,让操作只影响剩下的区域呢?