2012-09-06 88 views
-2

我有幾個.png是586 x 428.我需要將它們轉換爲512 x 512的.png。我想要在不拉伸圖像的情況下執行此操作。所以基本上,我想把寬度縮小到512,然後在原始圖像的上方和下方添加等量的透明度。PIL - 在.png附近添加透明度

因此,最終產品將是一個巴紐是512×512,並在頂部和底部的高度透明69px,使圖像的「彩色」的部分爲512×374

我正在嘗試使用Python Imaging Library來做到這一點。我對此很新,所以如果有人可以幫助我,這將非常感激。

+1

你有沒有發佈之前做了任何研究嗎? [這個問題](http://stackoverflow.com/questions/273946/how-do-i-resize-an-image-using-pil-and-maintain-its-aspect-ratio)結合[這另一個] (http://stackoverflow.com/questions/4379978/python-pil-how-to-make-area-transparent-in-png)應該解決你的問題。 – inspectorG4dget

+0

建議的話,除了以前的評論......這些類型的問題幾乎總是需要一個你到目前爲止的代碼示例。否則,別人可以給出的唯一答案只是一個完整的解決方案。我們不知道從哪裏開始。 – jdi

+0

從我的[這個重複問題的答案中的第一個示例](http://stackoverflow.com/a/9103783/496445)的確切代碼應該適用於您的問題。 – jdi

回答

0
from PIL import Image 

def adjust(image): 
    image = image.convert('RGBA') 
    width, height = image.size 
    new_width = 512 
    new_height = new_width * height/width 
    image = image.resize((new_width, new_height), resample=Image.ANTIALIAS) 
    new_image = Image.new('RGBA', (512, 512), (0, 0, 0, 0)) 
    upper = (512 - image.size[1])/2 
    new_image.paste(image, (0, upper)) 
    return new_image 
2

好的,您發佈問題已經過了兩個小時。既然你還沒有發佈的代碼,沒有人張貼了一個答案,這裏的東西我可以讓你開始:

  1. 加載源圖像
  2. Resize the source image到512x534
  3. 使512×512大小
  4. 新形象
  5. 複製在調整大小後的像素劃分爲矩形在新圖像中其角是(0, 69, 512, 441)
  6. Make the following two rectangles transparent(0,0,512,69)(0,441,512,512)

希望幫助您開始

+0

我寫了一個模塊,大部分這 https://github.com/jvanasco/imagehelper 人們可以砍掉相關的位,並使用上面的線索,在很短的時間內有一些功能齊全。 –