Home >Backend Development >PHP Problem >Implementation method of converting php bmp to jpg

Implementation method of converting php bmp to jpg

藏色散人
藏色散人Original
2020-08-05 09:37:041641browse

php bmp to jpg implementation method: first open the gd extension library; then use the "function_exist()" function "ImageCreateFromBMP" to check whether it exists; finally use the "ImageCreateFromBMP_private" method to achieve the conversion.

Implementation method of converting php bmp to jpg

Recommended: "PHP Video Tutorial"

Before converting the image format, first output phpinfo() to view php Library information, check whether the gd extension library is turned on. If it is not turned on, open the php.ini file, Use the search tool to find extension=php_gd2.dll, and put the [;] in front of extension=php_gd2.dll, and that’s it

Converting to jpg format requires JPEG Support, and png requires PNG Support. Correspondingly, first check whether the format you convert is supported

##The failure of the imagejpeg() function may be due to your folder permissions problem, please pay more attention

You can first use the function_exist() function ImageCreateFromBMP to check whether it exists. ImageCreateFromBMP_private in the following example is used to replace the ImageCreateFromBMP method

The sample code is as follows:


<?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;
    }
}?>

The above is the detailed content of Implementation method of converting php bmp to jpg. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn