2012-02-14 39 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); 
相關問題