如何使用php將bmp轉(zhuǎn)jpg格式

這篇文章運用簡單易懂的例子給大家介紹如何使用php將bmp轉(zhuǎn)jpg格式,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

太和網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),太和網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為太和1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的太和做網(wǎng)站的公司定做!

php bmp轉(zhuǎn)jpg的方法:首先打開“php.ini”文件;然后開啟gd擴展庫;最后使用“changeBMPtoJPG”等方法將bmp的文件轉(zhuǎn)換成jpg格式即可。

php轉(zhuǎn)換bmp圖片格式為jpg格式

進行圖片格式轉(zhuǎn)換前,先輸出phpinfo()查看php庫信息,查看gd擴展庫是否開啟,若未開啟,打開php.ini文件,用查找工具找到extension=php_gd2.dll,把extension=php_gd2.dll 前面的【;】,就可以了

這里轉(zhuǎn)換成為jpg格式需要JPEG Support支持,png需要 PNG Support支持,對應(yīng)的先檢查自己轉(zhuǎn)的格式是否支持

如何使用php將bmp轉(zhuǎn)jpg格式

imagejpeg()函數(shù)失敗也許是你的文件夾權(quán)限問題,得多注意

可以先用function_exist()函數(shù)ImageCreateFromBMP檢查是否存在,下例中的ImageCreateFromBMP_private用來代替ImageCreateFromBMP方法

示例代碼如下:

<?php 
$srcFile ='test.bmp';//需要轉(zhuǎn)換的圖片
$info = getimagesize($srcFile);    
$srcFileExt=$info['mime'];
//判斷是否是bmp格式
if($srcFileExt=='image/x-ms-bmp'){
    $result = changeBMPtoJPG($srcFile);
    if($result){
        echo $result;
    }else{
        echo "轉(zhuǎn)換失敗!";
    }
}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;
    }
}

?

關(guān)于如何使用php將bmp轉(zhuǎn)jpg格式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網(wǎng)頁標(biāo)題:如何使用php將bmp轉(zhuǎn)jpg格式
文章網(wǎng)址:http://m.kartarina.com/article0/jedpio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司外貿(mào)建站面包屑導(dǎo)航自適應(yīng)網(wǎng)站App開發(fā)Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
主站蜘蛛池模板: 熟妇人妻中文av无码| 久久亚洲AV无码西西人体| 日韩人妻无码精品久久免费一 | 日韩精品人妻系列无码av东京| 波多野结衣AV无码| 日韩免费无码视频一区二区三区| 亚洲AV无码一区二区一二区| 精品无码国产污污污免费网站| 色视频综合无码一区二区三区| 亚洲AV日韩AV永久无码绿巨人| 永久免费av无码入口国语片| 亚洲成?v人片天堂网无码| 人妻少妇精品无码专区| 亚洲AV无码国产剧情| 日本无码小泬粉嫩精品图| 精品久久久无码人妻字幂| 亚洲中文字幕无码av在线| 亚洲成AV人片在线观看无码| 欧洲成人午夜精品无码区久久| 国产精品无码素人福利| 亚洲国产成人无码AV在线影院| 亚洲AV无码资源在线观看| 亚洲AV人无码激艳猛片| 亚洲级αV无码毛片久久精品| 无码国产福利av私拍| 中文有无人妻vs无码人妻激烈 | yy111111少妇影院里无码| 精品人妻无码一区二区色欲产成人| 国产乱人无码伦av在线a| 日韩精品无码视频一区二区蜜桃| 无码国模国产在线观看免费| 国产精品亚洲一区二区无码| 无码中文av有码中文av| 爆乳无码AV一区二区三区 | 国产精品无码国模私拍视频 | 亚洲AV无码精品国产成人| 一本色道无码道DVD在线观看| 久久久无码精品亚洲日韩京东传媒 | 免费看国产成年无码AV片| 亚洲AV无码一区二区三区电影| 久久亚洲精品成人无码|