Beschränken Sie die Bildauflösung beim Hochladen

Ich stoße auf ein Problem, bei dem ein besonders großes Image meinen VPS-Server aufgrund von Speicherproblemen neu startet. Die Konfiguration ist nicht in meinen Händen, es ist so etwas wie die Ausfallsicherheit des Hosts.

Ich habe ein VPS mit 300M Speicher, was meiner Meinung nach für meine WordPress-Installation ausreicht, zumindest im Tagesgeschäft.

Das Bild, das ich hochlade, ist nicht besonders groß in der Dateigröße (~ 380 kb) und ist meistens schwarz mit weißen Buchstaben. Die Auflösung beträgt 4583 * 4583. Wenn ich es über WordPress hochlade, erhalte ich einen HTTP-Fehler im Upload-Fenster, und wenn ich die Live-Site überprüfe, ist sie für ein paar Minuten ausgefallen.

Ich habe mich gefragt, ob es möglich ist, eine Bildauflösung zu erkennen und zu verhindern, dass sie hochgeladen wird. Ich bin clever genug, um ein bisschen in einem Bildprozessor herumzureißen, aber einige meiner Autoren sind vielleicht nicht schlau genug, das Bild zu verarbeiten, bevor sie etwas so Großes hochladen.

Es wäre noch besser, wenn die Begrenzung auf den Bildern Bits pro Pixel basieren könnte, aber ich habe keine Ahnung, wofür das Limit meines Servers ist, also denke ich eine Fehlermeldung, dass das Bild nicht hochgeladen werden kann, weil es größer ist als, sagen wir, 2000 * 2000 ist genug.

Solutions Collecting From Web of "Beschränken Sie die Bildauflösung beim Hochladen"

Das Problem ist nicht so sehr das Hochladen selbst, da dies eine Netzwerkverbindung zwischen dem Client und dem Server ist. Es ist nicht, was den Speicher des Servers isst.

Wenn WordPress die Bilder “kritzelt”, kommt PHP ins Spiel und beginnt mit der Größenanpassung und dem Beschneiden der hochgeladenen Bilder. Es ist vor diesem Moment, dass Sie ein paar Überprüfungen durchführen müssen, bevor Sie PHP erlauben, Ihr Gedächtnis aufzufressen.

Mit dem wp_handle_upload_prefilter Filter können Sie eine function haken, die alle wp_handle_upload_prefilter für das Bild durchführt, das gerade geknackt werden soll:

 < ?php /* Marc Dingena Utilities * Test image resolution before image crunch */ add_filter('wp_handle_upload_prefilter','mdu_validate_image_size'); function mdu_validate_image_size( $file ) { $image = getimagesize($file['tmp_name']); $minimum = array( 'width' => '400', 'height' => '400' ); $maximum = array( 'width' => '2000', 'height' => '2000' ); $image_width = $image[0]; $image_height = $image[1]; $too_small = "Image dimensions are too small. Minimum size is {$minimum['width']} by {$minimum['height']} pixels. Uploaded image is $image_width by $image_height pixels."; $too_large = "Image dimensions are too large. Maximum size is {$maximum['width']} by {$maximum['height']} pixels. Uploaded image is $image_width by $image_height pixels."; if ( $image_width < $minimum['width'] || $image_height < $minimum['height'] ) { // add in the field 'error' of the $file array the message $file['error'] = $too_small; return $file; } elseif ( $image_width > $maximum['width'] || $image_height > $maximum['height'] ) { //add in the field 'error' of the $file array the message $file['error'] = $too_large; return $file; } else return $file; } ?> 

Versuchen Sie für ein Plugin http://wordpress.org/plugins/imsanity/ und das wird dazu beitragen, dass andere Benutzer der Site keine Bilder hochladen, die zu groß sind.

Imsanity passt die Größe von Bilduploads automatisch auf eine Größe an, die für die Anzeige im Browser angemessener ist, jedoch immer noch mehr als groß genug für eine typische Website-Nutzung. Das Plugin ist konfigurierbar mit einer maximalen Breite, Höhe und Qualität. Wenn ein Mitarbeiter ein Bild hochlädt, das größer als die konfigurierte Größe ist, wird Imsanity automatisch auf die konfigurierte Größe skalieren und das Originalbild ersetzen.

Es ist möglich, dass Ihr Server über genügend Arbeitsspeicher verfügt, um die Aufgabe auszuführen, aber die Einstellung für den PHP-Speichergrenzwert ist einfach zu niedrig für die Konvertierung sehr großer Bilder.

Versuchen Sie, memory_limit in der php.ini höher einzustellen.

 memory_limit=256M 

* Hinweis: Dies ist möglicherweise in einigen Hosting-Umgebungen keine geeignete Lösung.