Ich möchte einen PHP-Code schreiben, der die Größe eines über ein Formular hochgeladenen Bildes automatisch auf 147 x 147 Pixel ändert, aber ich habe keine Ahnung, wie ich vorgehen soll (ich bin ein relativer PHP-Neuling).
Bisher wurden Bilder erfolgreich hochgeladen, Dateitypen wurden erkannt und Namen bereinigt, aber ich möchte die Größenänderungsfunktion in den Code aufnehmen. Zum Beispiel habe ich ein Testbild mit einer Größe von 2,3 MB und einer Größe von 1331 x 1331, und ich möchte, dass der Code verkleinert wird, was meiner Meinung nach auch die Dateigröße des Bildes drastisch komprimiert.
Bisher habe ich Folgendes:
if ($_FILES) {
//Put file properties into variables
$file_name = $_FILES['profile-image']['name'];
$file_size = $_FILES['profile-image']['size'];
$file_tmp_name = $_FILES['profile-image']['tmp_name'];
//Determine filetype
switch ($_FILES['profile-image']['type']) {
case 'image/jpeg': $ext = "jpg"; break;
case 'image/png': $ext = "png"; break;
default: $ext = ''; break;
}
if ($ext) {
//Check filesize
if ($file_size < 500000) {
//Process file - clean up filename and move to safe location
$n = "$file_name";
$n = ereg_replace("[^A-Za-z0-9.]", "", $n);
$n = strtolower($n);
$n = "avatars/$n";
move_uploaded_file($file_tmp_name, $n);
} else {
$bad_message = "Please ensure your chosen file is less than 5MB.";
}
} else {
$bad_message = "Please ensure your image is of filetype .jpg or.png.";
}
}
$query = "INSERT INTO users (image) VALUES ('$n')";
mysql_query($query) or die("Insert failed. " . mysql_error() . "<br />" . $query);
php
image-processing
image-resizing
image-upload
Alex Ryans
quelle
quelle
upload_max_filesize
inphp.ini
erstens ist es möglich , die Datei mit einer Größe mehr als zu ladenupload_max_filesize
?. Gibt es eine Möglichkeit, die Größe des Bildes größer als zu ändernupload_max_filesize
? ohne Änderungupload_max_filesize
inphp.ini
Antworten:
Sie müssen entweder die ImageMagick- oder GD- Funktionen von PHP verwenden, um mit Bildern zu arbeiten.
Mit GD zum Beispiel ist es so einfach wie ...
Und Sie könnten diese Funktion so aufrufen ...
Aus persönlicher Erfahrung reduziert das Bild-Resampling von GD auch die Dateigröße erheblich, insbesondere beim Resampling von rohen Digitalkamerabildern.
quelle
BLOB
s? Ich würde empfehlen, Bilder im Dateisystem zu speichern und Referenzen in Ihre Datenbank einzufügen. Ich empfehle außerdem, die vollständige GD- (oder ImageMagick-) Dokumentation zu lesen, um zu sehen, welche anderen Optionen Ihnen zur Verfügung stehen.abs()
wirdceil($width-($width*abs($r-$w/$h)))
. Es wird in einigen Fällen benötigt.imagejpeg($dst, $file);
nach derimagecopyresampled($dst,...
Zeile hinzu. Ändern$file
Sie, wenn Sie das Original nicht überschreiben möchten.Diese Ressource(defekter Link) ist ebenfalls eine Überlegung wert - ein sehr ordentlicher Code, der GD verwendet. Ich habe jedoch das endgültige Code-Snippet geändert, um diese Funktion zu erstellen, die den Anforderungen des OP entspricht ...Sie müssen auch diese PHP-Datei einschließen ...
quelle
Einfache PHP-Funktion verwenden ( Bildskala ):
Syntax:
Beispiel:
Schritt: 1 Lesen Sie die Datei
Schritt: 2: Laden Sie die Bilddatei
Schritt: 3: Unser Lebensretter kommt in '_' | Skalieren Sie das Bild
Hinweis: Die Bildskala funktioniert für (PHP 5> = 5.5.0, PHP 7)
Quelle: Klicken Sie hier, um mehr zu lesen
quelle
Wenn Sie sich nicht für das Seitenverhältnis interessieren (dh das Bild auf eine bestimmte Dimension erzwingen möchten), finden Sie hier eine vereinfachte Antwort
Lassen Sie uns nun den Upload-Teil behandeln. Laden Sie im ersten Schritt die Datei in das gewünschte Verzeichnis hoch. Rufen Sie dann eine der oben genannten Funktionen basierend auf dem Dateityp (jpg, png oder gif) auf und übergeben Sie den absoluten Pfad Ihrer hochgeladenen Datei wie folgt:
Der Rückgabewert
$img
ist ein Ressourcenobjekt. Wir können an einem neuen Speicherort speichern oder das Original wie folgt überschreiben:Hoffe das hilft jemandem. Weitere Informationen zum Ändern der Größe von Imagick :: resizeImage und imagejpeg () finden Sie unter diesen Links.
quelle
upload_max_filesize
inphp.ini
erstens können Sie die Datei mit einer Größe mehr als nicht ladenupload_max_filesize
. Gibt es eine Möglichkeit , das Bild der Größe mehr , um die Größe alsupload_max_filesize
ohne Änderungupload_max_filesize
inphp.ini
Ich hoffe es wird für dich funktionieren.
quelle
( WICHTIG : Bei der Größenänderung von Animationen (animiertes Webp oder GIF) ist das Ergebnis ein nicht animiertes, aber in der Größe geändertes Bild aus dem ersten Frame! (Die ursprüngliche Animation bleibt erhalten ...)
Ich habe dies für mein PHP 7.2- Projekt (Beispiel imagebmp sicher (PHP 7> = 7.2.0): php / manual / function.imagebmp ) über techfry.com/php-tutorial mit GD2 (also keine Bibliothek von Drittanbietern) und erstellt Sehr ähnlich der Antwort von Nico Bistolfi, funktioniert jedoch mit allen fünf grundlegenden Bildmimetypen ( PNG, JPEG, WebP, BMP und GIF ) und erstellt eine neue Datei mit geänderter Größe, ohne die ursprüngliche zu ändern , und alles in einer Funktion und gebrauchsfertig (kopieren und in Ihr Projekt einfügen). (Sie können die Erweiterung der neuen Datei mit dem fünften Parameter festlegen oder sie einfach belassen, wenn Sie das Original behalten möchten.):
quelle
.cr2, .dng, .nef
und dergleichen) ändert ? GD2 hat keine Unterstützung und nach viel Mühe konnte ich ImageMagick einrichten. Beim Lesen der Datei schlägt jedoch ein Verbindungszeitlimit fehl. Und auch kein Fehlerprotokoll.Ich habe eine benutzerfreundliche Bibliothek zum Ändern der Bildgröße erstellt. Es kann hier auf Github gefunden werden .
Ein Beispiel für die Verwendung der Bibliothek:
Weitere Funktionen, falls Sie diese benötigen, sind:
quelle
Hier ist eine erweiterte Version der Antwort, die @Ian Atkin 'gegeben hat. Ich fand es sehr gut funktioniert. Für größere Bilder ist das :). Sie können kleinere Bilder tatsächlich vergrößern, wenn Sie nicht vorsichtig sind. Änderungen: - Unterstützt JPG-, JPEG-, PNG-, GIF- und BMP-Dateien. - Bewahrt die Transparenz für PNG- und GIF-Dateien. - Überprüft, ob die Größe des Originals noch nicht kleiner ist. - Überschreibt das direkt angegebene Bild.
Hier ist es also. Die Standardwerte der Funktion sind die "goldene Regel"
quelle
$w === $width && $h === $height
. Denk darüber nach. Sollte sein>=
und>=
Vergleiche. @ DanielZF-Kuchen:
quelle
Ich habe einen mathematischen Weg gefunden, um diesen Job zu erledigen
Github-Repo - https://github.com/gayanSandamal/easy-php-image-resizer
Live-Beispiel - https://plugins.nayague.com/easy-php-image-resizer/
quelle
Sie können die TinyPNG PHP-Bibliothek ausprobieren. Mit dieser Bibliothek wird Ihr Bild beim Ändern der Größe automatisch optimiert. Alles, was Sie benötigen, um die Bibliothek zu installieren und einen API-Schlüssel von https://tinypng.com/developers zu erhalten . Führen Sie den folgenden Befehl aus, um eine Bibliothek zu installieren.
Danach lautet Ihr Code wie folgt.
Ich habe einen Blog zum gleichen Thema geschrieben http://artisansweb.net/resize-image-php-using-tinypng
quelle
Ich würde einen einfachen Weg vorschlagen:
quelle
}}
Dies ist eine angepasste Lösung, die auf dieser großartigen Erklärung basiert . Dieser Typ machte eine schrittweise Erklärung. Hoffe es gefällt allen.
quelle