imagealphablending( $targetImage, false );
imagesavealpha( $targetImage, true );
为我做了。谢谢ceejayoz。
请注意,目标图像需要Alpha设置,而不是源图像。
编辑:完整的替换代码。另请参见下面的答案及其评论。不能保证这是完美的,但确实满足了我的需求。
$uploadTempFile = $myField[ 'tmp_name' ]
list( $uploadWidth, $uploadHeight, $uploadType )
= getimagesize( $uploadTempFile );
$srcImage = imagecreatefrompng( $uploadTempFile );
$targetImage = imagecreatetruecolor( 128, 128 );
imagealphablending( $targetImage, false );
imagesavealpha( $targetImage, true );
imagecopyresampled( $targetImage, $srcImage,
0, 0,
0, 0,
128, 128,
$uploadWidth, $uploadHeight );
imagepng( $targetImage, 'out.png', 9 );