亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php imagejpeg() 函數會破壞 png 圖像

php imagejpeg() 函數會破壞 png 圖像

PHP
qq_花開花謝_0 2022-10-22 15:23:24
我有一個php名為的函數compressImage(),如下所示:function compressImage($source, $destination, $quality) {    $info = getimagesize($source);    if ($info['mime'] == 'image/jpeg')       $image = imagecreatefromjpeg($source);    elseif ($info['mime'] == 'image/gif')       $image = imagecreatefromgif($source);    elseif ($info['mime'] == 'image/png')       $image = imagecreatefrompng($source);    imagejpeg($image, $destination, $quality);  }我正在嘗試使用此功能壓縮上傳的圖像。在一個php名為的文件中add1.php,我這樣調用這個函數:if (!empty($_FILES['image1']['name'])) {    $temp = explode(".", $_FILES["image1"]["name"]);    $newName = date('Ymdhis')."1";    $newName = strval($newName) . "." . end($temp);    $newPath = '../uploads/'.$newName;    move_uploaded_file($_FILES['image1']['tmp_name'], $target_dir . $newName);    compressImage($newPath, $newPath, 60);    $image1 = $newName;}這在我上傳jpeg圖像時有效,它實際上減小了它們的大小。但是當我上傳png文件時,它們已上傳但已損壞且無法打開。我不知道這個問題的原因是什么。任何幫助,將不勝感激。謝謝
查看完整描述

2 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

您可以修改compressImage它,使其生成與提供的格式相同的圖像,并在需要時使用函數的返回值進行進一步處理。


function compressImage( $source=false, $destination=false, $quality=80, $filters=false ) {

    $info = getimagesize( $source );

    switch( $info['mime'] ){

        case 'image/jpeg':

            /* Quality: integer 0 - 100 */

            if( !is_int( $quality ) or $quality < 0 or $quality > 100 ) $quality=80;

            $image = imagecreatefromjpeg( $source );

            return imagejpeg( $image, $destination, $quality );


        case 'image/gif':

            $image = imagecreatefromgif( $source );

            return imagegif( $image, $destination );


        case 'image/png':

            /* Quality: Compression integer 0(none) - 9(max) */

            if( !is_int( $quality ) or $quality < 0 or $quality > 9 )$quality=6;

            $image = imagecreatefrompng( $source );

            return imagepng( $image, $destination, $quality, $filters );


        case 'image/webp':

            /* Quality: Compression 0(lowest) - 100(highest) */

            if( !is_int( $quality ) or $quality < 0 or $quality > 100 )$quality=80;

            $image=imagecreatefromwebp( $source );

            return imagewebp( $image, $destination, $quality );


        case 'image/bmp':

            /* Quality: Boolean for compression */

            if( !is_bool( $quality ) )$quality=true;

            $image=imagecreatefrombmp( $source );

            return imagebmp( $image, $destination, $quality );


        default:exit( sprintf( 'Unknown type: %s',$info['mime'] ) );

    }

}

使用返回值


if( compressImage($newPath, $newPath, 60) ){ /* success */ }

else { /* Failure */ }


查看完整回答
反對 回復 2022-10-22
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

imagejpeg在所有情況下,您都在使用;編寫圖像 還有 GIF 和 PNG 文件。



查看完整回答
反對 回復 2022-10-22
  • 2 回答
  • 0 關注
  • 201 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號