Heim >Backend-Entwicklung >PHP-Problem >Implementierungsmethode zum Konvertieren von PHP BMP in JPG

Implementierungsmethode zum Konvertieren von PHP BMP in JPG

藏色散人
藏色散人Original
2020-08-05 09:37:041649Durchsuche

php So konvertieren Sie BMP in JPG: Öffnen Sie zuerst die GD-Erweiterungsbibliothek und überprüfen Sie dann mit der Funktion „ImageCreateFromBMP“, ob sie vorhanden ist. Verwenden Sie schließlich die Methode „ImageCreateFromBMP_private“, um die Konvertierung durchzuführen .

Implementierungsmethode zum Konvertieren von PHP BMP in JPG

Empfohlen: "PHP-Video-Tutorial"

Bevor Sie Bildformate konvertieren, geben Sie zunächst phpinfo() aus, um PHP anzuzeigen Bibliotheksinformationen: Überprüfen Sie, ob die gd-Erweiterungsbibliothek aktiviert ist. Wenn sie nicht aktiviert ist, öffnen Sie die Datei php.ini, suchen Sie mit dem Suchtool nach extension=php_gd2.dll und ersetzen Sie das [;] davor von extension=php_gd2.dll, und es ist fertig

Die Konvertierung in das JPG-Format erfordert JPEG-Unterstützung und PNG-Unterstützung. Überprüfen Sie daher zunächst, ob das von Ihnen konvertierte Format

unterstützt.

@& Der Fehler der Funktion @

imagejpeg() könnte ein Problem mit Ihren Ordnerberechtigungen sein. Achten Sie darauf, dass Sie zuerst die Funktion function_exist() verwenden ImageCreateFromBMP, um zu überprüfen, ob es existiert. ImageCreateFromBMP_private wird im folgenden Beispiel verwendet, um die ImageCreateFromBMP-Methode zu ersetzen

Der Beispielcode lautet wie folgt:

<?php 
$srcFile =&#39;test.bmp&#39;;//需要转换的图片$info = getimagesize($srcFile);    
$srcFileExt=$info[&#39;mime&#39;];//判断是否是bmp格式if($srcFileExt==&#39;image/x-ms-bmp&#39;){    $result = changeBMPtoJPG($srcFile);    if($result){        echo $result;
    }else{        echo "转换失败!";
    }
}else{    echo "该图片不是bmp格式";
} 
exit;function ImageCreateFromBMP_private($filename) {    if (!$f1 = fopen($filename, "rb"))        return false;    $FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1, 14));    if ($FILE[&#39;file_type&#39;] != 19778)        return false;    $BMP = unpack(&#39;Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel&#39; .
        &#39;/Vcompression/Vsize_bitmap/Vhoriz_resolution&#39; .
        &#39;/Vvert_resolution/Vcolors_used/Vcolors_important&#39;, fread($f1, 40));    $BMP[&#39;colors&#39;] = pow(2, $BMP[&#39;bits_per_pixel&#39;]);    if ($BMP[&#39;size_bitmap&#39;] == 0)        $BMP[&#39;size_bitmap&#39;] = $FILE[&#39;file_size&#39;] - $FILE[&#39;bitmap_offset&#39;];    $BMP[&#39;bytes_per_pixel&#39;] = $BMP[&#39;bits_per_pixel&#39;] / 8;    $BMP[&#39;bytes_per_pixel2&#39;] = ceil($BMP[&#39;bytes_per_pixel&#39;]);    $BMP[&#39;decal&#39;] = ($BMP[&#39;width&#39;] * $BMP[&#39;bytes_per_pixel&#39;] / 4);    $BMP[&#39;decal&#39;] -= floor($BMP[&#39;width&#39;] * $BMP[&#39;bytes_per_pixel&#39;] / 4);    $BMP[&#39;decal&#39;] = 4 - (4 * $BMP[&#39;decal&#39;]);    if ($BMP[&#39;decal&#39;] == 4)        $BMP[&#39;decal&#39;] = 0;    $PALETTE = array();    if ($BMP[&#39;colors&#39;] < 16777216) {        $PALETTE = unpack(&#39;V&#39; . $BMP[&#39;colors&#39;], fread($f1, $BMP[&#39;colors&#39;] * 4));
    }    $IMG = fread($f1, $BMP[&#39;size_bitmap&#39;]);    $VIDE = chr(0);    $res = imagecreatetruecolor($BMP[&#39;width&#39;], $BMP[&#39;height&#39;]);    $P = 0;    $Y = $BMP[&#39;height&#39;] - 1;    while ($Y >= 0) {        $X = 0;        while ($X < $BMP[&#39;width&#39;]) {            switch ($BMP[&#39;bits_per_pixel&#39;]) {                case 32:                    $COLOR = unpack("V", substr($IMG, $P, 3) . $VIDE);                    break;                case 24:                    $COLOR = unpack("V", substr($IMG, $P, 3) . $VIDE);                    break;                case 16:                    $COLOR = unpack("n", substr($IMG, $P, 2));                    $COLOR[1] = $PALETTE[$COLOR[1] + 1];                    break;                case 8:                    $COLOR = unpack("n", $VIDE . substr($IMG, $P, 1));                    $COLOR[1] = $PALETTE[$COLOR[1] + 1];                    break;                case 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];                    break;                case 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];                    break;                default:                    return false;                    break;
            }

            imagesetpixel($res, $X, $Y, $COLOR[1]);            $X++;            $P += $BMP[&#39;bytes_per_pixel&#39;];
        }        $Y--;        $P+=$BMP[&#39;decal&#39;];
    }    fclose($f1);    return $res;
}function changeBMPtoJPG($srcPathName){    $srcFile=$srcPathName;  
    $dstFile = str_replace(&#39;.bmp&#39;, &#39;.jpg&#39;, $srcPathName);    $photoSize = GetImageSize($srcFile);  
    $pw = $photoSize[0];  
    $ph = $photoSize[1];    $dstImage = ImageCreateTrueColor($pw, $ph);  
    $white = imagecolorallocate($dstImage, 255, 255, 255);    //用 $white 颜色填充图像
    imagefill( $dstImage, 0, 0, $white);    //读取图片  
    $srcImage = ImageCreateFromBMP_private($srcFile); 
    //合拼图片  
    imagecopyresampled($dstImage, $srcImage, 0, 0, 0, 0, $pw, $ph, $pw, $ph);  
    $judge = imagejpeg($dstImage, $dstFile, 90);  
    imagedestroy($dstImage);    if($judge){        return $dstFile;
    }else{        return false;
    }
}?>


Das obige ist der detaillierte Inhalt vonImplementierungsmethode zum Konvertieren von PHP BMP in JPG. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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