[Gelöst] Bilder (Originale) nach Upload verkleinern
Eingetragen von pidru (53)
am 19.03.2019 - 15:32 Uhr in
am 19.03.2019 - 15:32 Uhr in
Hallo,
ich möchte die User Bilder bis 50MB hochladen lassen, möchte jedoch auf dem Server keine Original-Bilder liegen haben, die mehr als 3000px groß sind.
Ich nutze das D8 Media Core-Modul und habe am beim entsprechenden Feld die maximale Größe auf 3000 x 3000px gestellt. Bilder die 4500 x 3500px und 20MB groß sind werden hochgeladen, aber wenn ich unter /sites/default/files/... nachsehe ist das Bild immer noch 4500 x 3500px und nicht 3000 x irgendwas.
Was mache ich falsch oder was schafft Abhilfe?
Danke
- Anmelden oder Registrieren um Kommentare zu schreiben
Grundsätzlich gibt es 2
am 19.03.2019 - 17:53 Uhr
Grundsätzlich gibt es 2 Mechanismen. Zum einen kannst du beim Medientyp Bild für das Uploadfeld vom Typ Bild erst Mal festlegen, welche Abmessungen und welche Minimalgröße, bzw. Maximalgröße die Datei haben muss/darf, die hochgeladen wird.
Dann gibt es die Bildstile, die dafür sorgen, dass aus dieser hochgeladenen Originaldatei eine Kopie erzeugt wird, die den Abmessungen entspricht, die du für Facebook-Posts, mobile Endgeräte oder verschiedene Bildschirmgrößen brauchst.
Natürlich muss Drupal erst Mal die Originaldatei haben, um diese mittels Bildstil in die Kopie in den gewünschten Abmessungen zu verwandeln.
Außerdem gibt es natürlich noch viele Tools, um die Dateigröße der zu erzeugten Derivate möglichst klein zu halten. Dazu werden Tools wie Tinypng, resmush it oder jpeglib.
Was du brauchst, wenn dir das Original zu groß ist und du es hinterher wieder loswerden willst ist ein Arbeitsablauf, der den Originalupload nach dem Erzeugen der Kopie in den gewünschten Abmessungen diese als neues Original ausweist und die Originaldatei automatisch löscht.
In der Regel lässt man die Originaldatei aber im Uploadordner um im Falle einer Neuverarveitung, z.B. Anpassen der Website an ein neues Endgerät, aus diesem Original mittels Bildstil eine neue Kopie in den gewünschten Abmessungen anzuzeigen.
Was du vermutlich nicht gemacht hast, ist dich mit Bildstilen zu beschäftigen.
https://drupal-tv.de
Drupal sehen und lernen
Hallo dinmikkith,doch das
am 21.03.2019 - 08:22 Uhr
Hallo dinmikkith,
doch das habe ich intensiv. Ich habe 5 Bildstile von 40 x 40 bis 2500px. Das funktioniert auch alles einwandfrei.
Nur wenn mir ein User z.B. 5 x 50MB hochlädt, sind das ca. 240MB zuviel, die ich gerne wieder loswerden würde.
Drupal generiert die Bilder der Bildstile ja erst beim ersten Aufruf z.B. durch einen node,
verstehe ich dich richtig, dass das Original vorher nicht auf 3000 px mal X px verkleinert wird (s. Kommentar oben zur Größeneinstellung)?
Dann würde ja das programmatische Generieren helfenhttps://www.flocondetoile.fr/blog/generate-programmatically-image-styles-drupal-8
.
Was ich nicht verstehe, ist warum Drupal daraus nicht beim Upload ein z.B. 3000px x 2000px "Original" generiert und daraus dann die entsprechenden Bildstile.
Hat Du / jemand einen Tipp wie ich das erreichen kann?
Danke!
Zitat:Was du brauchst, wenn
am 22.03.2019 - 03:11 Uhr
Was du brauchst, wenn dir das Original zu groß ist und du es hinterher wieder loswerden willst ist ein Arbeitsablauf, der den Originalupload nach dem Erzeugen der Kopie in den gewünschten Abmessungen diese als neues Original ausweist und die Originaldatei automatisch löscht.
Das kann nicht sein! Ich kann es jetzt nur von Drupal 7 beschreiben, aber logischerweise sollte Drupal 8 das ja ebenfalls können.
Unter Bild bearbeiten im Content Type kannst du bei Min/Max Größe mit beliebigen Werten arbeiten:
Die maximale erlaubte Bildgröße ausgedrückt als BREITExHÖHE (z.B. 640x480). Leer lassen für keine Einschränkung. Wenn ein größeres Bild hochgeladen wird, wird die Größe auf die angegebene Breite und Höhe angepasst. Die Größenanpassung von Bildern beim Hochladen führt zum Verlust der Exif-Daten im Bild.
Das mache ich nun seit 7 Jahren und es funktioniert einwandfrei.
Beispiel:
Meine User laden bis 50 MB Bilder hoch, egal ob Multiupload oder einzeln.
Meine vorgegebenen Werte sind 1600 x 1200 px in oben stehender Beschreibung.
Ein Bild, welches z.B. 12 MB hat, wird auch mit 12 MB in den FTP Ordner geladen und die 12 MB werden auch noch angezeigt in der Node, bis gespeichert wurde!!!
Nach speichern wieder öffnen, dann hat ein Bild nur noch ca. 230 - 400 KB, diese Werte sind ebenfalls im FTP Ordner reduziert.
Dort gibt es dann kein Originalbild mehr mit 12 MB etc. das ist auch so gewünscht (zumindest von mir).
Einziger Fall wo das nicht funktioniert ist:
Wenn ein Bild z.B. 12 MB hat, aber bei Upload bereits kleiner als dein festgelegter Pixelwert ist. Dann findet keine Reduzierung statt.
@pidru
Ich habe momentan keine Drupal 8 am laufen, sonst hätte ich es für dich dort getestet. Würde mich aber wundern, wenn es dort nicht funktionieren sollte.
Hast du eine Node mal gspeichert und dann erneut nachgesehen? Wie gesagt die Komprierung findet erst beim speichern statt, bzw. ist für dich erst nach speichern sichtbar.
Mit Bildstilen hat das Ganze gar nichts zu tun. Wie du schon richtig bemerkt hast, sind die Bildstile nur ausschlaggebend für die spätere Ausgabe, haben aber keinerlei Einfluss auf den Upload.
Beim Upload kann ja auch Drupal noch gar nicht wissen welche Bildstile ich später verwenden möchte, zudem man ja meistens auch mehrere Bildstile pro Bild verwendet (Thumbs, Liste, Detail, Full etc.)
Grüße Jenna
Ist das so? Ja das muss ich
am 22.03.2019 - 07:05 Uhr
Ist das so? Ja das muss ich demnächst Mal testen. Danke für den Hinweis Jenna
https://drupal-tv.de
Drupal sehen und lernen
Hallo Jenna, vielen Dank für
am 25.03.2019 - 15:05 Uhr
Hallo Jenna,
vielen Dank für deine ausführliche Antwort!
Genau so, wie Du es beschrieben hast sollte man es erwarten.
Ich habe jetzt weitere Test mit Media-Core durchgeführt und dabei festgestellt
das es funktioniert wenn man den Upload direkt über
>Inhalt >Media hinzufügen >Image ausführt
Jedoch nicht wenn man an einen Inhaltstyp ein Feld anhängt vom Typ Media, Referenztyp Image
und dann Bilder über das Formular hochlädt.
Vielleicht hat jemand eine Idee, denn am Feld selber kann man beim Typ Media nichts einstellen ausser die Anzahl?
Wie kann man die Größe begrenzen?
Grüße
pidru
Hallo pidru, das ist ein
am 25.03.2019 - 17:23 Uhr
Hallo pidru,
das ist ein Drupal 8 Problem. Ich habe auf drupal.org vor einiger Zeit ein Issue dazu aufgemacht und auch einen Patch geschrieben der das Problem beheben sollte: https://www.drupal.org/project/drupal/issues/3008292
Du kannst das ja ggf. mal testen und Dein Ergebnis ggf. auch im Issue https://www.drupal.org/project/drupal/issues/3008292 kundtun. Vielleicht kommt dann auch etwas Bewegung dort rein.
Guck dir mal dieses Modul an
am 25.03.2019 - 19:01 Uhr
Guck dir mal dieses Modul an ob es mit Media zusammen arbeitet.
https://www.drupal.org/project/imageapi_optimize
oder
(Drupal 7) und den Hinweis in den Issues zu D8 lesen wie weit die sind.
https://www.drupal.org/project/max_image_size
Grüße Jenna
Das tut es, weil es über
am 25.03.2019 - 19:33 Uhr
Das tut es, weil es über Bildstile implementiert wird. Allerdings sind mindestens ein V-Server und Linux-Kenntnisse absolute Voraussetzung um die ganzen Kommandozeilenwerkzeuge, denen das Tool eine Ui liefert, zu installieren und Teilweise aus systemfremden Quellen zu beziehen und zu kompilieren. Grossartiges Tool, aus dem Einsteiger aber maximal 20 % und Menschen, die aus Unkenntnis bei der Anwendung von Drupal auf Shared Hosting setzen, ganze 5 % Potential herausholen können.
Wenn du einen V-Server oder gar einen Root-Server und die notwendigen Kenntnisse besitzt, würde ich dir das Tool sofort wärmstens empfehlen. Gerade für die Bilder, die Nutzer bei dir hochladen sollen sicher ein Powertipp.
Auch wenn das keine Lösung für das Problem ist, dass oben angesprochenen wird, ist es sicher eine Gute Idee konsequent auf Media und Entity-Browser zu setzen und in deinen Inhalten nur Entität Referenzfelder vom Typ Medium zu verwenden. Wenn du das konsequent umsetzt, werden deine Mitarbeiter oder Kunden dem Problem, dass du entdeckt hast, gar nicht erst über den Weg laufen.
Einige der Tools, die du über das von Jenna genannte Werkzeug einbinden kannst, habe ich oben auch schon angesprochen.
https://drupal-tv.de
Drupal sehen und lernen
Für Abhängigkeiten in Drupal
am 25.03.2019 - 19:47 Uhr
Für Abhängigkeiten in Drupal 8 sollte doch eigentlich auch https://www.drupal.org/project/ludwig funktionieren.
Grüße Jenna
Vielen Dank an Euch alle! die
am 25.03.2019 - 20:22 Uhr
Vielen Dank an Euch alle!
die heutige lange Suche hat das entsprechende Patch erbracht für D8.6 bzw. folgende Versionen, es ist schlichtweg ein Bug, nach Einspielen funktioniert es wie gedacht
https://www.drupal.org/project/drupal/issues/3032282
für die die es wie mich betrifft das Ganze wird hier weiter verfolgt.
https://www.drupal.org/project/drupal/issues/3016649
Ich werde mir eure Empfehlungen aber auch noch mal durchsehen. Entity-Browser und Co kenne ich und ist durchaus eine Alternative
Danke auch Stefan, das Patch setzt ja an ähnlicher Stelle an wie die oben zitierten.
Ich markiere das als Gelöst
Danke
pidru