2012-02-14 40 views
1

我有一个网站可以生成不同角度的彼此堆叠在一起的类似于宝丽来的图像。 到目前为止,一切运行良好,但现在我已经开始绕透明的.png获得一些黑色背景。
您可以看到问题here。上一张专辑中的图像都搞砸了。Imagemagick在旋转透明图像上的不需要的黑色背景

我使用imagemagick(6.5.4.7-3.fc12)。

我的命令看起来像这样:
第一个是包含whitin一个foreach并生成一束PNG图像的在不同角度
convert '{$sf}' -auto-orient -thumbnail 120x120 -gravity center -bordercolor snow -background black -polaroid {$angle} {$i}.png

第二命令采用先前生成的图像旋转和toghater堆叠它们
convert '*.png' -background transparent -alpha on -gravity center -layers merge -extent 190x190 +repage -thumbnail 115x115 -gravity center -extent 120x120 'result.png'

据我与调试运行得到的,黑色背景与所述第一命令生成的图像已经存在,它们只有当我旋转图像出现。如果我只使用-polaroid 0而不是+polaroid,那么生成的图像就OK了。
我的猜测是,问题不在于代码本身,而是ImageMagick或其他更新在我的服务器上,并开始了整个混乱。

我也尝试了各种组合设置-alpha和其他所有我可以在imagemagick文档中找到的文档,它甚至与透明度略有相关,但似乎没有任何效果。

回答

1

各种测试中,我终于得到了一个结论,这个问题是不是与我convert命令后。

我的问题的解决方案是重新安装/更新ImageMagick。

0

您的第一行中已将背景设置为“黑色”。这意味着你不会获得透明度。如果将其设置为“无”,它会起作用吗?

编辑:

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) 
+0

背景(据我所知)被设置为宝丽来阴影......但我已经尝试设置为'无'和'透明'只是为了确保,具有相同的结果。我改变的东西似乎对它没有任何影响。 – 2012-02-14 13:03:12

+0

@JoeBlack如果在第一行添加'-alpha on',它也不起作用? – 2012-02-14 13:07:54

+0

'-alpha on'既没有帮助也没有'-alpha set',就像没有其他-alpha设置一样(已经尝试过)。 – 2012-02-14 13:36:02

1

//它romove不需要的黑色/白色背景,并使其透明backgraund。

  ImageInfo info1 = new ImageInfo(
      "/opt/apache-tomcat-6.0.18/webapps/newcpclient_branch/upload/sample/ATT00003.jpg"); 
    MagickImage blankImage = new MagickImage(info1); 

    **blankImage.setBackgroundColor(PixelPacket.queryColorDatabase("#FFFF8800"));** 

    blankImage = blankImage.rotateImage(250.0); 
    blankImage.setFileName("/opt/apache-tomcat-6.0.18/webapps/newcpclient_branch/upload/sample/transparent.png"); 
    blankImage.writeImage(info1); 
相关问题