Home >Backend Development >PHP Problem >Implementation method of converting php bmp to jpg
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.
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 attentionYou 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 methodThe sample code is as follows:<?php $srcFile ='test.bmp';//需要转换的图片$info = getimagesize($srcFile); $srcFileExt=$info['mime'];//判断是否是bmp格式if($srcFileExt=='image/x-ms-bmp'){ $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['file_type'] != 19778) return false; $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; $PALETTE = array(); if ($BMP['colors'] < 16777216) { $PALETTE = unpack('V' . $BMP['colors'], fread($f1, $BMP['colors'] * 4)); } $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']) { switch ($BMP['bits_per_pixel']) { 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['bytes_per_pixel']; } $Y--; $P+=$BMP['decal']; } fclose($f1); return $res; }function changeBMPtoJPG($srcPathName){ $srcFile=$srcPathName; $dstFile = str_replace('.bmp', '.jpg', $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!