2011-12-17 4 views
1

나는 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로 변환됩니다

http://cl.ly/CgR9

이이해야한다 무엇 인 플리커 (Flickr)에 의해 변환됩니다

http://www.flickr.com/photos/lzyy/6524414285/sizes/z/in/photostream/

내가 PIL 잘못 사용하고 또는 약간의 트릭이 난 몰라?

+0

내가 PIL에서 링크 및 플리커 – tito

+0

에서 한 그대로,이 두 이미지를 비교하는 것은 불가능 사이의 차이를 볼 수 없습니다. Flikr은 흰색 배경과 다른 이미지 크기를 제공합니다. 다른 하나는 검정색 배경입니다. 차이점은 이런 식으로 dessen 수 있습니다. – jsbueno

+0

참고로, Flickr는 일반적으로 사진에 약간의 선명함과 색상 균형을 적용합니다. – Benjamin

답변

2

김프에서 두 이미지를 모두 다운로드하고 볼 때, 차이점은 Flickr의 색상 프로파일은 내장 된 색상 프로파일이지만, PIL에 의해 생성 된 색상 프로파일은 포함되지 않은 점입니다. 대비 또는 선명도 차이를 알지 못하기 때문에 결과 색상 차이가 문제라고 생각합니다.

이미지와 관련된 모든 색상 프로파일을 ppreservign하여 PIL 워크 플로우를 만들어야합니다. 빠른 Google 검색은 frontpage에서 4-5 줄의 예제를 가진 pyCMS를 가져옵니다. 대부분의 경우 pyCMS은 당신이 무엇을 요구 할 것이다 :

http://www.cazabon.com/pyCMS/

관련 문제