Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der Methode zur Verarbeitung von Bildern im BMP-Format in PHP
In diesem Artikel wird hauptsächlich die Methode zur Verarbeitung von Bildern im BMP-Format durch PHP vorgestellt. Er analysiert die zugehörigen Funktionen und Verwendungstechniken von Bildern im BMP-Format anhand spezifischer Beispiele:
Im Laufe des Tages wies die Qualitätssicherung darauf hin, dass es beim Hochladen von Bildern des Projekts ein Problem gab, insbesondere: Der Upload war erfolgreich, aber die Vorschau schlug fehl. Nachdem ich dort war, habe ich ein paar weitere Bilder zum Hochladen hochgeladen, ihn dann sorgfältig gefragt, welches Bild er hochgeladen hat, und nachdem ich es gelesen hatte, habe ich es mit der Funktion getimagesize
ausgedruckt.
Array ( [0] => 494 [1] => 260 [2] => 6 [3] => width="494" height="260" [bits] => 24 [mime] => image/x-ms-bmp )
Schauen Sie genau hin, das oben gedruckte Array enthält eine Mime-Datei von image/x-ms-bmp, die im BMP-Format vorliegt Die PHP-Bibliothek wurde später nicht verarbeitet und konnte nicht hochgeladen werden, solange die Mime-Datei vorhanden war.
Nachdem ich am Abend zurückkam, suchte ich im Internet nach Methoden im Zusammenhang mit der PHP-Verarbeitung von BMP und fand sie schließlich in Stackoverflow. In dem Beitrag stand, dass es eine ImageCreateFromBMP
-Methode zum Eingeben von Funktionskommentaren gibt Über imagecreate auf der offiziellen Website: Rufen Sie diese Funktion zunächst für Dateien im BMP-Format auf und speichern Sie sie dann mit imagejpeg.
<?php function ImageCreateFromBMP($filename) { //Ouverture du fichier en mode binaire if (!$f1 = fopen($filename, "rb")) return FALSE; //1 : Chargement des ent�tes FICHIER $FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1, 14)); if ($FILE['file_type'] != 19778) return FALSE; //2 : Chargement des ent�tes BMP $BMP = unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel' . '/Vcompression/Vsize_bitmap/Vhoriz_resolution' . '/Vvert_resolution/Vcolors_used/Vcolors_important', fread($f1, 40)); $BMP['colors'] = pow(2, $BMP['bits_per_pixel']); if ($BMP['size_bitmap'] == 0) $BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset']; $BMP['bytes_per_pixel'] = $BMP['bits_per_pixel'] / 8; $BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']); $BMP['decal'] = ($BMP['width'] * $BMP['bytes_per_pixel'] / 4); $BMP['decal'] -= floor($BMP['width'] * $BMP['bytes_per_pixel'] / 4); $BMP['decal'] = 4 - (4 * $BMP['decal']); if ($BMP['decal'] == 4) $BMP['decal'] = 0; //3 : Chargement des couleurs de la palette $PALETTE = array(); if ($BMP['colors'] < 16777216) { $PALETTE = unpack('V' . $BMP['colors'], fread($f1, $BMP['colors'] * 4)); } //4 : Cr�ation de l'image $IMG = fread($f1, $BMP['size_bitmap']); $VIDE = chr(0); $res = imagecreatetruecolor($BMP['width'], $BMP['height']); $P = 0; $Y = $BMP['height'] - 1; while ($Y >= 0) { $X = 0; while ($X < $BMP['width']) { if ($BMP['bits_per_pixel'] == 24) $COLOR = unpack("V", substr($IMG, $P, 3) . $VIDE); elseif ($BMP['bits_per_pixel'] == 16) { $COLOR = unpack("n", substr($IMG, $P, 2)); $COLOR[1] = $PALETTE[$COLOR[1] + 1]; } elseif ($BMP['bits_per_pixel'] == 8) { $COLOR = unpack("n", $VIDE . substr($IMG, $P, 1)); $COLOR[1] = $PALETTE[$COLOR[1] + 1]; } elseif ($BMP['bits_per_pixel'] == 4) { $COLOR = unpack("n", $VIDE . substr($IMG, floor($P), 1)); if (($P * 2) % 2 == 0) $COLOR[1] = ($COLOR[1] >> 4); else $COLOR[1] = ($COLOR[1] & 0x0F); $COLOR[1] = $PALETTE[$COLOR[1] + 1]; } elseif ($BMP['bits_per_pixel'] == 1) { $COLOR = unpack("n", $VIDE . substr($IMG, floor($P), 1)); if (($P * 8) % 8 == 0) $COLOR[1] = $COLOR[1] >> 7; elseif (($P * 8) % 8 == 1) $COLOR[1] = ($COLOR[1] & 0x40) >> 6; elseif (($P * 8) % 8 == 2) $COLOR[1] = ($COLOR[1] & 0x20) >> 5; elseif (($P * 8) % 8 == 3) $COLOR[1] = ($COLOR[1] & 0x10) >> 4; elseif (($P * 8) % 8 == 4) $COLOR[1] = ($COLOR[1] & 0x8) >> 3; elseif (($P * 8) % 8 == 5) $COLOR[1] = ($COLOR[1] & 0x4) >> 2; elseif (($P * 8) % 8 == 6) $COLOR[1] = ($COLOR[1] & 0x2) >> 1; elseif (($P * 8) % 8 == 7) $COLOR[1] = ($COLOR[1] & 0x1); $COLOR[1] = $PALETTE[$COLOR[1] + 1]; } else return FALSE; imagesetpixel($res, $X, $Y, $COLOR[1]); $X++; $P += $BMP['bytes_per_pixel']; } $Y--; $P+=$BMP['decal']; } //Fermeture du fichier fclose($f1); return $res; } $pic = '2.bmp'; $res = ImageCreateFromBMP($pic); imagepng($res, '1.png'); imagejpeg($res, '1.jpeg');
bmpimage php wird Konvertieren Sie BMP-Bilder in JPG und andere Bilder in einem beliebigen Format
BMP-Bilder im PHP-Format. Konvertieren Sie BMP-Bilder in jpg und andere Bilder in jedem Format
php verwendet die GD-Bibliothek, um Bilder im bmp-Format (imagebmp)
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Methode zur Verarbeitung von Bildern im BMP-Format in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!