以下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 );
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 );
问题内容: 嘿,当我从png创建缩略图时,尝试保持png的透明度时遇到麻烦,有人对此有任何经验吗?任何帮助都会很棒,这是我目前正在做的事情: 问题答案: 过去,我已经成功地做到了: 我发现输出图像使用质量更好的比
问题内容: 我正在尝试创建透明的png图像,并对其他各种png和jpg进行分层,以创建具有透明度的最终png。我在创建初始的空透明png时遇到问题。目前有白色背景。 谁能指出我正确的方向。到目前为止,这是我的代码… 问题答案: 在每个新图层上设置。 尝试这个:
问题内容: 情况是这样的:我有一个小的50x50图片。我还有一个小的50x50透明图片,其中包含50x50图片的框架,因此我基本上想将透明png 放在图片上方 ,并将这两个图片合并,这将导致最终的第三张图片看起来像这样:http ://img245.imageshack.us/i/50x50n.png 注意:我不想只使用HTML来做到这一点(我通过编写一个将透明png放在原始图像顶部的javasc
我试图拖动对象表示为PNG图像透明背景从AnchorPane到HBox。 我使用以下线条将图像设置为拖动视图: 对于不透明的背景图像,这一切都很好,但对于透明的图像,图像的背景是白色的,不透明度为“0.8”。 我尝试为节点拍摄快照: 但它不起作用,白色背景仍然存在。有没有其他方法可以让它像原始图像一样透明?
我正试图重新设计我的网站,使我原来的方形、基于瓷砖的图像渲染更像是图像的剪贴画。。。为了摆脱网格模式。 这是它最初的样子。。。 这是我想要的一个粗略的模型: 所以我重新保存了一个透明背景的图像缩略图。。。我只想让狗展示,正方形是透明的,可以在下面显示网站的背景。 然而,当我在页面上呈现它时,它的背景是黑色的。 我已经检查了我的CSS,看看是否有某种img类,或用于渲染漫画的类。。。甚至可以通过引导
我的任务是: 创建一个TBitmap对象 如何在Delphi XE中做到这一点?