我想做拇指并将其裁剪成所需尺寸。它工作正常,但如果我的新拇指区域小于裁剪1,则所有空白区域都填充黑色。 代码:
import os
from PIL import Image
def resize(file_path):
file, ext = os.path.splitext(file_path)
im = Image.open(file_path)
size = (100, 'auto')
new_path = file + "_.jpg"
im.thumbnail(size, Image.ANTIALIAS)
region = im.crop((0, 0, 100, 100))
region.save(new_path, "JPEG")
也许有一些选项,比如max_height for crop method或其他什么?
谢谢!
答案 0 :(得分:2)
您需要在那里应用一些简单的算法,而不是盲目裁剪。
在图像中获取最大尺寸的正方形,方形中心与图像中心对齐。 最大尺寸的正方形的边长等于图像的高度或宽度的最大值。
获取正方形后,将其重新取样为缩略图尺寸的大小。
答案 1 :(得分:1)
如果图像的最大值超过100x100,您是否只是有条件地裁剪图像? 如果是的话,
def resize(file_path):
file, ext = os.path.splitext(file_path)
im = Image.open(file_path)
size = (100, 'auto')
new_path = file + "_.jpg"
im.thumbnail(size, Image.ANTIALIAS)
if im.size[1] > 100:
im = im.crop((0, 0, 100, 100))
im.save(new_path, "JPEG")
答案 2 :(得分:1)
我会这样做:
如果图像很宽,则将其缩放为100px高。如果它很高,则将其缩放为100px宽。
裁剪中间的100x100。
def resize(file_path):
file, ext = os.path.splitext(file_path)
im = Image.open(file_path)
w, h = im.size
size = (100, 'auto') if h > w else ('auto', 100)
new_path = file + "_.jpg"
im.thumbnail(size, Image.ANTIALIAS)
w, h = im.size
region = im.crop((w/2 - 50, h/2 - 50, w/2 + 50, h/2 + 50))
region.save(new_path, "JPEG")
答案 3 :(得分:0)
我找到了解决方案:
import os
from PIL import Image
def resize(file_path):
file, ext = os.path.splitext(file_path)
im = Image.open(file_path)
size = (100, 'auto')
new_path = file + "_.jpg"
im.thumbnail(size)
(width, height) = im.size
if height >= width: box = (0, 0, 100, 100)
else: box = (0, 0, 100, height)
region = im.crop(box)
region.save(new_path, "JPEG")
感谢您的回复!