Hallo zusammen, ich habe mich nur gefragt, warum GIFs beim Hochladen so klein sind – selbst wenn man 100% als Größe wählt, z. B.
![]()
Hallo zusammen, ich habe mich nur gefragt, warum GIFs beim Hochladen so klein sind – selbst wenn man 100% als Größe wählt, z. B.
![]()
Das sieht nach einem Fehler bei der spezifischen Auswahl aus, die du hochladen möchtest? Kannst du das bitte genau, Schritt für Schritt, mit Beispielen beschreiben?
Hier ist ein GIF, das das Problem auslöst. Wenn ich auf meinem Computer die Eigenschaften betrachte, ist der Typ auf ‘image/gif’ festgelegt. Die Größe beträgt 10,4 MB. Es scheint, dass Discourse die Bilder verkleinert. Ich kann kleinere GIFs, die ich auf die gleiche Weise erstellt habe, ohne Anzeigeprobleme hochladen.
![]()
Also geht es um GIFs, die normalerweise zu groß sind, um das Upload-Limit zu erfüllen, und die irgendwie automatisch verkleinert werden? Das resultierende Bild ist winzig:
50 x 29, 32 KB
Vielleicht ist das ein Regression @sam? ![]()
Möglicherweise ein Regression. Tritt dies auch bei nicht animierten GIFs auf?
Danke, Leute – ich verwende http://giffox.com/, um GIFs zu erstellen.
Manchmal funktioniert es und manchmal nicht… Ich denke, ihr habt vielleicht recht mit der Größe. Ich habe gerade ein paar Tests gemacht.
Es funktioniert, wenn es sehr kurz ist.
Hier ist ein 2,06 MB großes GIF
Hier ist ein 3,47 MB großes GIF
Hier ist ein 9,06 MB großes GIF
![]()
Ja, es sieht so aus, als ob bei der 4-MB-Grenze etwas sehr Schlimmes passiert, @sam @eviltrout. Ich habe den Titel angepasst, um das Problem widerzuspiegeln. Wir müssen das beheben, wir haben Rückschritte gemacht.
Ich wollte nur bestätigen, dass dies nur bei animierten GIFs auftritt.
Ich denke, wir verwenden Gifsicle: Command-Line Animated GIFs zum Ändern der Größe, also vermute ich, dass sich die Parameter geändert haben.
@vinothkannans, könntest du heute kurz einen Blick darauf werfen?
Dies tritt seit der Änderung der Bildverkleinerung auf. Der obige Commit wird dieses Problem beheben, und größere GIFs werden ordnungsgemäß skaliert.
Ist das die richtige Lösung? Ich denke nicht, dass wir Videos, die im Wesentlichen Videos sind, „verkleinern“ sollten. Das fühlt sich nach einer eher extremen (und möglicherweise sehr CPU-intensiven für den Server) Manipulation an, die die Qualität von Videos (GIFs) ruinieren könnte.
Ich bin mir hier nicht sicher. Ich denke, wir sollten animierte GIFs, die zu groß sind, einfach ablehnen, anstatt uns in das Geschäft der Videoverkleinerung zu zwängen (oder noch besser: in MP4 zu konvertieren). Das ist ein ganz anderes Problem, das es anzupacken gilt.
Ja, es sieht nach einer einfachen Lösung aus. Ich werde die aktuelle Funktionalität ändern.
Im Übrigen scheint es, als würden wir die GIF-Bilder seit den letzten 5 Jahren mit „gifsicle
Ich denke, in diesem Fall würde das Ablehnen sehr spezifischer GIFs mehr Code in unser Repository bringen.
Derzeit gehen wir einfach davon aus, dass alle GIFs „animiert“ sind, siehe:
Wenn wir ändern wollen, dass einige GIFs abgelehnt werden, müssen wir eine Formaterkennung für animierte GIFs implementieren und dann spezielle Ablehnungslogik einbauen. Das ist besonders kompliziert bei Bildern, die wir optimieren müssen (aufgrund der Abmessungen), da wir dann animierte GIFs nicht mehr optimieren können.
Positiv ist, dass wir die Abhängigkeit von gifsicle loswerden. Negativ ist, dass unsere Upload-Pipeline komplexer wird.
Persönlich halte ich die Lösung von @vinothkannan für in Ordnung und risikoarm. Es ist Code, den wir seit 5 Jahren haben, und mir sind keine großen Performance-Probleme bekannt.
Trotzdem, @codinghorror, ich würde mich hier nicht darum streiten, wenn du die Unterstützung für das Ändern der Größe animierter GIFs komplett abschaffen möchtest. Es ist jedoch eine ziemlich komplexe Änderung. Die Identifizierung ist einfach genug, aber die Ablehnung mit einer Fehlermeldung umzusetzen, könnte etwas knifflig sein.
Dein animiertes GIF ist größer als 10 MB und kann daher nicht hochgeladen werden.
Dein animiertes GIF ist größer als 600x400 Pixel und kann daher nicht hochgeladen werden.
Wie auch immer, das ist deine Entscheidung. Meine Empfehlung ist, die Lösung so zu lassen und weiterzumachen. Wenn du die Unterstützung abschaffen möchtest, lass es uns bitte wissen.
Hinweis: Diese Entfernung erfordert auch, dass wir die Unterstützung für animierte Avatare abschaffen (eine optionale Funktion; ehrlich gesagt bin ich nicht sehr glücklich darüber, dass wir das tun müssen).
Hmm, also solange das animierte GIF in das gesamte Upload-Größenlimit passt (??), wird seine .. „Videoqualität
Die Geschichte dahinter war, dass wir beim Optimieren animierte GIFs “zerstörten”. Wenn Sie Bilder hochgeladen haben, die in einer Lightbox angezeigt werden sollten, haben wir sie dadurch unbrauchbar gemacht.
Unsere Code-Internals verfügten über keine “Erkennungslogik”, um festzustellen, ob ein GIF animiert war oder nicht. Die Lightbox-Funktion greift erst, nachdem der Beitrag in die Datenbank geschrieben wurde.
Die Lösung bestand darin, unseren “Resize”-Code so anzupassen, dass er animierte GIFs nicht mehr beschädigt, sondern korrekt damit umgeht.
Das Problem ist jedoch, dass wir Teile unserer Upload-Pipeline neu gestalten müssen, um animierte GIFs eine “besondere Behandlung” zukommen zu lassen, falls wir die Unterstützung dafür streichen.
Es gibt auch einige Nebeneffekte zu berücksichtigen, wie etwa das langfristige Neuberechnen von Markdown, falls sich Parameter ändern, sowie das Abrufen von direkt verlinkten Bildern.
Die Lösung, bei der es einfach darum ging, das Größenanpassen zu reparieren, bedeutete, dass wir uns keine Sorgen um all diese Dinge machen mussten.
Ich bin der Meinung, dass wir bei animierten GIFs überhaupt keine „Optimierung
Nur zur Klarstellung.
Sie möchten, dass wir:
gifsicle aus unserem Docker-Image entfernenWir schätzen den Aufwand auf etwa 1–2 Wochen an detaillierter Arbeit. Wir möchten nur bestätigen, dass Sie dies in Auftrag geben möchten, insbesondere da die Dinge derzeit ordnungsgemäß funktionieren.
Klar, weniger Abhängigkeiten sind besser, oder?
Wahrscheinlich in Ordnung.
Einfach die Dateigröße der Remote-Datei prüfen. Wenn sie zu groß ist, nicht herunterladen. Mir ist das sonst egal.
Ja, in erster Linie wird die Dateigröße ein Problem sein, lange bevor Höhe und Breite wirklich relevant werden. (Im singenden Twilight-Zone-Sprech: „eine andere Dimension … die Dimension der Zeeeeit“.) Das ist auch der Grund, warum es so verdammt seltsam ist, ein Bild wie ein Video zu behandeln. Das sind ziemlich unterschiedliche Tiere!
Ja, niemand bei Verstand will das.
Wir benötigen diesen Codepfad, da wir GIFs schließlich sowieso automatisch in MP4s umwandeln sollten. Das bringt uns einen Schritt näher, und das ist ein Gewinn für die Welt.
Ich habe die Abhängigkeit von gifsicle entfernt in: