2011-12-17 8 views
1

私はDSLR経由で写真を撮ってからps itし、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からのリンクやFlickr – tito

+0

から1の間の差が表示されません。 Flikrは、私たちに白い背景と異なる画像サイズを与えます。もう一つは黒い背景にある。このような違いはありません。 – jsbueno

+0

FYI、Flickrは通常、写真にいくつかのシャープニングとカラーバランスを適用しています。 – Benjamin

答えて

2

しかし、両方の画像をGIMPでダウンロードして見ると、違いは、Flickrのものが組み込みのカラープロファイルになり、PILで生成されたものは埋め込まれていない点です。コントラストやシャープネスの違いに気づかないうちに、結果的に色の違いが問題になると思います。

画像に関連付けられたカラープロファイルをPESワークフローで作成する必要があります。迅速なGoogle検索では、フロントページに4-5行の例があるpyCMSが表示されます。ほとんどのpyCMSは、あなたが求めているものを次のようになります。

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

関連する問題