2012-09-06 83 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 人们可以砍掉相关的位,并使用上面的线索,在很短的时间内有一些功能齐全。 –