Imagemagick旋转透明图像上不需要的黑色背景

时间:2012-02-14 12:36:51

标签: background imagemagick rotation

我有一个网站可以生成彼此以不同角度堆叠的类似宝丽来的图像。 到目前为止一切运作良好,但现在我开始在透明的.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文档中找到的所有其他内容,这些内容甚至与透明度略有关系,但似乎没有任何效果。

3 个答案:

答案 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)