나는 DSLR을 통해 사진을 찍은 다음 ps로 찍고 PIL을 사용하여 크기를 조정하려고합니다. 여기 핵심 코드는PIL로 변환하면 그림이 잘못됩니다.
image = Image.open(img_obj, 'r')
for pic_size_name, pic_size_val in pic_sizes.items():
width, height = [int(item) for item in pic_size_val.split('x')]
img_width, img_height = image.size
pic_save_path = os.path.join(
save_path,
hash_val + '_' + pic_size_name + '.jpg'
)
if image.mode not in ('L', 'RGB'):
image = image.convert('RGBA')
if width > img_width and height > img_height:
image.save(pic_save_path, "jpeg", quality=90)
continue
img = image.copy()
if pic_size_name == 's' or pic_size_name == 'xs':
dest_ratio = float(width)/height
current_ratio = float(img_width)/img_height
if dest_ratio > current_ratio:
offset = int((img_height - img_width/dest_ratio)/2)
box = (0, offset, img_width, img_height - offset)
else:
offset = int((img_width - img_height * dest_ratio)/2)
box = (offset, 0, img_width - offset, img_height)
img = img.crop(box)
img = img.resize((width, height), Image.ANTIALIAS)
img.save(pic_save_path, "jpeg", quality=90)
elif pic_size_name == 'm':
new_height = img_height * width/img_width
img = img.resize((width, new_height), Image.ANTIALIAS)
img.save(pic_save_path, "jpeg", quality=90)
else:
img.thumbnail((width, height), Image.ANTIALIAS)
img.save(pic_save_path, "jpeg")
입니다. 그러나 크기 조정 결과가 좋지 않습니다.
이
은 PIL로 변환됩니다이이해야한다 무엇 인 플리커 (Flickr)에 의해 변환됩니다
http://www.flickr.com/photos/lzyy/6524414285/sizes/z/in/photostream/
내가 PIL 잘못 사용하고 또는 약간의 트릭이 난 몰라?
내가 PIL에서 링크 및 플리커 – tito
에서 한 그대로,이 두 이미지를 비교하는 것은 불가능 사이의 차이를 볼 수 없습니다. Flikr은 흰색 배경과 다른 이미지 크기를 제공합니다. 다른 하나는 검정색 배경입니다. 차이점은 이런 식으로 dessen 수 있습니다. – jsbueno
참고로, Flickr는 일반적으로 사진에 약간의 선명함과 색상 균형을 적용합니다. – Benjamin