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. In diesem Artikel wird hauptsächlich die Methode zur PHP-Verarbeitung von Bildern im BMP-Format vorgestellt und die damit verbundenen Funktionen und Verwendungsfähigkeiten von PHP-Bildern im BMP-Format anhand konkreter Beispiele analysiert. Freunde, die es benötigen, können darauf verweisen.
Array ( [0] => 494 [1] => 260 [2] => 6 [3] => width="494" height="260" [bits] => 24 [mime] => image/x-ms-bmp )
Das oben gedruckte MIME ist image/x-ms-bmp, das im BMP-Format vorliegt gd-Bibliothek in PHP. Nach der Verarbeitung dieser Funktion habe ich später in die Konfigurationsdatei eingefügt, dass sie nicht hochgeladen werden kann, solange der Mime dieser ist.
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');
Verwandte Empfehlungen:
[GD] Bilder im BMP-Format generieren (imagebmp)
[GD] Bilder im BMP-Format generieren_PHP
Das obige ist der detaillierte Inhalt vonSchritte zum Verarbeiten von Bildern im BMP-Format mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!