10

トリミング、サイズ変更、透かしのオーバーレイなど、写真に対していくつかの簡単なことを行う必要がある Python コードがあります。私は PIL を使用しましたが、リサンプル/サイズ変更の結果はひどいものです。私は imagemagick を使用しました。インターフェイスとコマンドは、猫を箱に詰めてから、階段からキーボードに向かって繰り返し投げることによって設計されました。

シンプルで高品質の画像変換を行うためにPythonで使用できるPILまたはImagemagickではないものを探しています。さらに言えば、コマンド ライン インターフェイスが適切であれば、Python バインディングを使用する必要さえありません。

ああ、それは比較的プラットフォームにとらわれない必要があります。私たちの実稼働サーバーは Linux ですが、一部の開発者は Windows で開発しています。ライブラリとして使用するためにばかげた gui コードの束をインストールする必要もありません。

4

9 に答える 9

18

私は PIL を使用しましたが、リサンプル/サイズ変更の結果はひどいものです。

あなたがいる限り、そうすべきではありません:

  1. ダウンスケーリング操作には Image.ANTIALIAS フィルタリングのみを使用します
  2. アップスケーリング操作には Image.BICUBIC フィルタリングのみを使用します。
  3. パレット画像を使用している場合は、サイズ変更の前に「RGB」カラー モードに変換することを忘れないでください。
  4. .thumbnail() を使用しないでください。それはがらくたです
  5. JPEG を保存するときに適切なレベルに設定しquality=ます (デフォルトはかなり低いです)。
于 2009-09-18T00:37:44.803 に答える
2

Image.thumbnailがなぜこのようなフレークを取得しているのかわかりません。私が実行している現在のリリースでは、目的のサイズを見つけて画像のサイズを変更するだけです。適切なリサンプルフィルターを使用し、最初にRGBに変換する限り(bobinceが言うように)、サムネイルはサイズ変更と何ら変わりはありません。

サムネイルメソッドの実際のソースは次のとおりです。

def thumbnail(self, size, resample=NEAREST):
  # preserve aspect ratio
  x, y = self.size
  if x > size[0]: y = max(y * size[0] / x, 1); x = size[0]
  if y > size[1]: x = max(x * size[1] / y, 1); y = size[1]
  size = x, y

  if size == self.size:
      return

  self.draft(None, size)

  self.load()

  try:
      im = self.resize(size, resample)
  except ValueError:
      if resample != ANTIALIAS:
          raise
      im = self.resize(size, NEAREST) # fallback

  self.im = im.im
  self.mode = im.mode
  self.size = size

  self.readonly = 0
于 2011-04-08T17:01:52.860 に答える
1

pypiをチェックしましたか?ざっと検索すると、そこにいくつかの画像関連のツールが表示されます。また、python-gdも発見しましたが、それがどれほど役立つかはわかりません。

私自身、PILで問題が発生したことはありませんが、ある種の多様性が興味深いかもしれません。

于 2009-09-18T00:53:31.090 に答える
1

imagemagick は事実上のオープンソース イメージング ライブラリのようですが、おそらくDevIL (クロス プラットフォーム、単純な画像操作を行うようです) またはFreeImageです。

于 2009-09-18T00:25:12.313 に答える
1

これらのイメージング ライブラリのいくつかを見てみましょう。

hxxp://pypi.python.org/pypi/collective.croppingimagefield/0.1beta

hxxp://pypi.python.org/pypi/cropresize/0.1.1

hxxp://pypi.python.org/pypi/image_resize/1.0

于 2009-10-09T19:03:58.513 に答える
1

GIMP には妥当なコマンドライン インターフェイスがあると思います。

于 2009-09-18T02:10:00.747 に答える
0

前回比較したとき、このダウンスケーラーの出力は、GIMP の「cubic」オプションの出力とほぼ同じです。

 import Image

 def stretch(im, size, filter=Image.NEAREST):
     im.load()
     im = im._new(im.im.stretch(size, filter))
     return im

IIRC、違いは視覚的に区別できません-丸めにより一部のピクセル値は+/- 1であり、エッジが丸くなる傾向があります。遅くもないです。

参照: http://www.mail-archive.com/image-sig@python.org/msg00248.html

于 2010-06-07T00:13:36.057 に答える