coolmodi
Lt. Commander
- Registriert
- Apr. 2012
- Beiträge
- 1.957
Hey, hab auch mal ein "Problem".
Und zwar hab ich hier ein Bild, einmal als PNG (2MB) und einmal davon ein Jpeg (800KB). Die beiden lade ich jetzt mit meiner Upload Funktion hoch, dabei wird unter anderem alles was nicht Jpeg ist zu Jpeg konvertiert, dann halt das Wordpresszeug mit verschiedenen Auflösungen.
Lokal kommen dann 2x fast die gleichen Größen bei raus, z.B. hat die 150x150 Version in beiden Fällen 5KB.
Das Problem: Auf dem Server kommt bei der als Jpeg hochgeladenen Datei 18KB raus, PNG wird weiterhin zu einem 5KB Jpeg.
Woran könnte das liegen? Selbst wenn ich die Jpeg quali in WP auf 50 setze ist das Bild noch größer, Qualität natürlich schlechter.
Meine Lösung aktuell ist einfach zusätzlich zu PNG, Gif und BMP auch Jpegs nochmal in Jpeg "umzuwandeln":
Da kommen dann wie zu erwarten wieder 2x die gleichen Dateigrößen bei raus, ursprüngliche Jpegs sind natürlich nochmal etwas schlechter als Lokal ohne die Extraumwandlung, obwohl die Größen dort auch ohne gleich sind.
Und zwar hab ich hier ein Bild, einmal als PNG (2MB) und einmal davon ein Jpeg (800KB). Die beiden lade ich jetzt mit meiner Upload Funktion hoch, dabei wird unter anderem alles was nicht Jpeg ist zu Jpeg konvertiert, dann halt das Wordpresszeug mit verschiedenen Auflösungen.
Lokal kommen dann 2x fast die gleichen Größen bei raus, z.B. hat die 150x150 Version in beiden Fällen 5KB.
Das Problem: Auf dem Server kommt bei der als Jpeg hochgeladenen Datei 18KB raus, PNG wird weiterhin zu einem 5KB Jpeg.
Woran könnte das liegen? Selbst wenn ich die Jpeg quali in WP auf 50 setze ist das Bild noch größer, Qualität natürlich schlechter.
Meine Lösung aktuell ist einfach zusätzlich zu PNG, Gif und BMP auch Jpegs nochmal in Jpeg "umzuwandeln":
PHP:
if (($imginfo[2] == IMAGETYPE_PNG || $imginfo[2] == IMAGETYPE_GIF || $imginfo[2] == IMAGETYPE_BMP) && !current_user_can("manage_options")) {
$imagestr = imagecreatefromstring(file_get_contents($file["tmp_name"]));
imagejpeg($imagestr, $file["tmp_name"], 80);
$file["type"] = "image/jpeg";
} elseif ($imginfo[2] == IMAGETYPE_JPEG) { // das hier halt extra, rest war schon vorher da
$imagestr = imagecreatefromstring(file_get_contents($file["tmp_name"]));
imagejpeg($imagestr, $file["tmp_name"], 80);
$file["type"] = "image/jpeg";
}
Da kommen dann wie zu erwarten wieder 2x die gleichen Dateigrößen bei raus, ursprüngliche Jpegs sind natürlich nochmal etwas schlechter als Lokal ohne die Extraumwandlung, obwohl die Größen dort auch ohne gleich sind.