Sorl-thumbnail: Division durch Null bei intelligenter Ernte

Erstellt am 16. Jan. 2015  ·  5Kommentare  ·  Quelle: jazzband/sorl-thumbnail

Ich erhalte hier einen float division by zero Fehler:

sorl/thumbnail/engines/pil_engine.py in _get_image_entropy, line 239

Ich nenne es mit:

{% thumbnail comment.user.profile.avatar_image "30x30" crop="smart" as im %}

Dies geschieht bei einigen Bildern und nicht bei anderen. Das Bild, das mir Probleme bereitet, ist das folgende:

https://www.dropbox.com/s/m5e79cvk53ujs7b/Chelsea_physic_garden.jpg?dl=0

Nach einer kurzen Ausgrabung lautet der Code:

def _get_image_entropy(self, image):
    """calculate the entropy of an image"""
    hist = image.histogram()
    hist_size = sum(hist)
    print hist_size
    hist = [float(h) / hist_size for h in hist]
    return -sum([p * math.log(p, 2) for p in hist if p != 0])

print hist_size gibt eine Null in der Konsole an - daher der Fehler. Wir brauchen eine Art von try / except für diese Berechnung, aber ich bin mir nicht sicher, wie die except sein sollten!

bug

Hilfreichster Kommentar

Versuchen Sie es mit Kissen == 3.1.0. Siehe # 429.

Alle 5 Kommentare

Hätte sagen sollen, dass ich sorl-thumbnail==11.12.1b benutze

Ich habe auch festgestellt, dass ich diesen Fehler nicht bekomme, wenn ich das Bild größer einstelle. Wenn Sie es eingrenzen, erhalten Sie den Fehler:

{% thumbnail comment.user.profile.avatar_image "37x37" crop="smart" as im %}

... aber ein Pixel größer nicht:

{% thumbnail comment.user.profile.avatar_image "38x38" crop="smart" as im %}

Vermutlich liegt das daran, dass bei sehr kleinen Bildern die Entropiedifferenzierung gegen Null tendiert. Was deutet darauf hin, dass die Entropieberechnung auf einem bereits reduzierten Bild ausgeführt wird? Sicherlich sollte der Entropie-Cropper auf dem Bild in voller Größe ausgeführt werden, um den "intelligentesten" Bereich zu bestimmen - und dann auf die gewünschte Größe verkleinert werden?

Habe den gleichen Fehler

Der gleiche Fehler wird reproduziert, wenn get_thumbnail von sorl.thumbnail auch wenn crop = 'center' verwendet wird

Versuchen Sie es mit Kissen == 3.1.0. Siehe # 429.

@ Lampslave Danke. Behebt das Problem.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen