Frage

Ich habe Python-Code, der nur ein paar einfache Dinge mit Fotos tun muss:Sie können ein Wasserzeichen zuschneiden, die Größe ändern und es überlagern.Ich habe PIL verwendet und die Ergebnisse beim Resample/Resize sind SCHRECKLICH.Ich habe imagemagick verwendet und die Benutzeroberfläche und die Befehle wurden entworfen, indem ich eine Katze in eine Kiste packte und sie dann wiederholt eine Treppe hinunter auf eine Tastatur warf.

Ich suche nach etwas, das nicht PIL oder Imagemagick ist und das ich mit Python verwenden kann, um einfache, qualitativ hochwertige Bildtransformationen durchzuführen.Im Übrigen müssen nicht einmal Python-Bindungen vorhanden sein, wenn die Befehlszeilenschnittstelle gut ist.

Oh, und es muss relativ plattformunabhängig sein, unsere Produktionsserver sind Linux, aber einige unserer Entwickler entwickeln unter Windows.Es kann auch nicht die Installation einer Menge albernem GUI-Code erfordern, um es als Bibliothek zu verwenden.

War es hilfreich?

Lösung

  

Ich habe verwendet PIL und das Resampling / Größe ändert Ergebnisse sind fürchterlich.

Sie sollten nicht sein, solange Sie:

  1. Verwendung nur Image.ANTIALIAS Filterung für Operationen
  2. Downscaling
  3. Verwendung nur Image.BICUBIC Filterung für Upscaling-Operationen.
  4. erinnern zu ‚RGB‘ Farbmodus vor dem Resize zu konvertieren, wenn Sie ein paletted Bild verwenden
  5. nicht verwenden .thumbnail (). es ist Mist
  6. stellen Sie den quality= Ebene etwas angemessen, wenn JPEGs speichern (die Standardeinstellung ist ziemlich niedrig)

Andere Tipps

Ich bin nicht sicher, warum Image.thumbnail so Flakfeuer zu bekommen. In der vorliegenden Veröffentlichung, die ich renne weg von sie tut etwas mehr als die gewünschte Größe herauszufinden, und das Bild an Ort und Stelle ändern. Solange Sie die richtigen Resampling-Filter verwenden und konvertieren zuerst in RGB (wie bobince sagt) thumbnail sollte nicht anders sein als die Größe.

Hier ist die eigentliche Quelle für die Thumbnail-Methode:

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

PIL kann gut Redimensionierung tun. Stellen Sie sicher, dass Ihr Quellbild im RGB-Modus ist, keine Farben-Palette, und versuchen, die anderen Algorithmus Entscheidungen.

Während ImageMagick scheint die De-facto-Open-Source-Imaging-Bibliothek zu sein, möglicherweise DevIL ( Cross-Plattform scheint einfache Bildoperationen) oder Freeimage .

zu tun

Haben Sie überprüft pypi ? Eine oberflächliche Suche zeigt einige Bild verwandte Tools gibt, ich Python-gd auch entdeckt, keine Ahnung, wie nützlich es könnte jedoch sein.

Ich habe noch nie irgendwelche Probleme mit PIL mich, aber eine Art von Vielfalt könnte interessant sein.

GIMP hat eine vernünftige Kommandozeilen-Schnittstelle, denke ich.

Schauen Sie sich einige dieser Bildbibliotheken an:

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

ich die letzte Mal im Vergleich Ausgang dieses Downscaler ist fast identisch mit dem von GIMP „cubic“ Option:

 import Image

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

IIRC sind die Unterschiede visuell nicht zu unterscheiden - einige Pixel +/- 1 aufgrund Rundungswerte, und sie neigen dazu, die Ränder zu sein. Es ist auch nicht langsam.

cf: http: //www.mail-archive .com / Bild-sig @ python.org / msg00248.html

  

Ich habe verwendet PIL und das Resampling / Größe ändert Ergebnisse sind fürchterlich.

in PIL Ändern der Größe wurde in vielerlei Hinsicht gebrochen und PIL ist nicht für eine lange Zeit aufrechterhalten. Ausgehend von Pillow 2.7 die meisten Probleme sind entlang fixiert mit dramatisch Leistungsverbesserung. Stellen Sie sicher, dass Sie neuesten Pillow verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top