PHP schneidet Bilder zu und speichert sie in MySQL
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-08-08 09:30:33
Original
1159 Leute haben es durchsucht
Wenn Sie PHP zum Verarbeiten von Bildern verwenden, müssen Sie diese häufig zuschneiden. Wie man zugeschnittene Bilder in der MySQL-Datenbank speichert, ist eine interessante Frage. Besorgen Sie sich zunächst die hochgeladene Datei: $picFile = $_FILES["picFileName"];
$picType = $picFile["type"];
$picData = file_get_contents($tempFile);
Nach dem Login kopieren
Wenn Sie die Bildgröße nicht ändern und direkt in MySQL speichern müssen, können Sie sie einfach wie folgt implementieren $tempFile = $picFile["tmp_name"];
$picData = base64_encode($picData);
$query = "INSERT INTO image
(imgid, image, imgtype)
values(
null,
'$picData',
'$picType'
);";
$link->query($query);
Nach dem Login kopieren
Aber wenn Sie die Bildgröße ändern und die Bilddaten in Form eines Zeichenstroms erhalten möchten, ist ein kleiner Trick erforderlich:
Schließen Sie zuerst den Zuschnitt des Bildes ab und erhalten Sie das Bildobjektlist($picW, $picH) = getimagesize($tempFile);
if($picW>600){ //超出大小
$src = imagecreatefromjpeg($tempFile); //获取原图数据
$nW =550;
$nH = $picH*$nW/$picW;
$newPicTemp = imagecreatetruecolor($nW,$nH); //创建彩色图片对象
imagecopyresampled($newPicTemp,$src,0,0,0,0,$nW,$nH,$picW,$picH);
}
Nach dem Login kopieren
Nach diesem Schritt ist newPicTemp der Ressourcentyp Bilddaten. Hier tritt das Problem auf. Beachten Sie den obigen Code. Der von file_get_contents zurückgegebene Typ ist ein String, der auch der Parametertyp von base64_encode ist. So konvertieren Sie eine Ressource in einen String-Typ. Nach dem Studium habe ich herausgefunden, dass PHP über diese Funktion string ob_get_contents ( void )
Nach dem Login kopieren
verfügt, um den Inhalt des Ausgabepuffers in Form einer Zeichenfolge zurückzugeben.
Die Idee besteht also darin, das Ressourcenbild in den Puffer auszugeben und dann ein Objekt zu verwenden, um seinen Inhalt abzurufen. Der Code lautet wie folgtob_start(); //开启输出缓冲区
imagejpeg($newPicTemp); //这个函数可以显示出图片,同时也是把数据输出
$imgContent = ob_get_contents(); //获取字符流
ob_end_clean(); //关闭并清除缓冲区
$picData = base64_encode($imgContent); //不要忘记转码
Nach dem Login kopieren
Auf diese Weise erhalten Sie nach der Größenänderung den Bildzeichenstrom, der in MySQL gespeichert werden kann
Zerstören Sie schließlich die temporären Datenimagedestroy($src);
imagedestroy($newPicTemp);
Nach dem Login kopieren
Wenn Sie es lesen müssen Und um das Bild anzuzeigen, können Sie den folgenden Code verwenden $query = "SELECT image, imgtype from image where imgid = $imgid ;";
$result = $link->query($query);
$row = mysqli_fetch_array($result);
$data = base64_decode( $row["image"]);
$type = $row["imgtype"];
ob_clean();
header("Content-Type:'$type'");
echo $data;
Nach dem Login kopieren
Es ist ersichtlich, dass mehrere Schlüsselfunktionen das ob-Logo enthalten. ob ist der Ausgabepuffer, ein sehr wichtiges und nützliches Werkzeug in PHP Siehe php.net
Das Obige stellt PHP vor, um Bilder zuzuschneiden und in MySQL zu speichern, einschließlich des relevanten Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31