我有一个网站可以生成彼此以不同角度堆叠的类似宝丽来的图像。 到目前为止一切运作良好,但现在我开始在透明的.png周围获得一些黑色背景 您可以看到问题here。上一张专辑中的图片都搞砸了。
我正在使用imagemagick(6.5.4.7-3.fc12)。
我的命令看起来像这样:
第一个包含在foreach中,并生成一组以不同角度旋转的png
convert '{$sf}' -auto-orient -thumbnail 120x120 -gravity center -bordercolor snow -background black -polaroid {$angle} {$i}.png
第二个命令采用先前生成的图像并将它们堆叠起来
convert '*.png' -background transparent -alpha on -gravity center -layers merge -extent 190x190 +repage -thumbnail 115x115 -gravity center -extent 120x120 'result.png'
据我所知,使用第一个命令生成的图像中已经存在黑色背景,它们仅在我旋转图像时出现。如果我只使用-polaroid 0
代替+polaroid
,那么结果图片就可以了
我的猜测是问题不在于代码本身,而是在我的服务器上升级了ImageMagick或其他东西,这开始了这一切。
我还尝试了各种组合设置-alpha
以及我在imagemagick文档中找到的所有其他内容,这些内容甚至与透明度略有关系,但似乎没有任何效果。
答案 0 :(得分:1)
经过各种测试后,我终于得出结论,问题不在于我的convert
命令。
我的问题的解决方案是重新安装/更新ImageMagick。
答案 1 :(得分:1)
//删除不需要的黑/白背景并使其成为透明背景。
答案 2 :(得分:0)
你的第一行中-background设置为'black'。这意味着你没有透明度。如果将其设置为“无”,它是否有效?
修改强>
import os
import random as ra
for i in range(10):
image = 'convert C:/image.png -auto-orient -thumbnail 120x120 -gravity center -bordercolor snow -background none -polaroid '+str(ra.uniform(0,360))+' C:/test/image_polaroid_'+str(i)+'.png'
os.system(image)
image = 'convert -size 500x500 xc:transparent C:/test/result.png'
os.system(image)
for i in range(10):
image = 'composite -gravity center C:/test/image_polaroid_'+str(i)+'.png C:/test/result.png C:/test/result.png'
os.system(image)
编辑2:
import os
import random as ra
for i in range(10):
image = 'convert C:/image.png -background none -polaroid 0 C:/test/image_polaroid_'+str(i)+'.png'
os.system(image)
image = 'mogrify -rotate '+str(ra.randint(0,360))+' -background none C:/test/image_polaroid_'+str(i)+'.png'
os.system(image)