亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP縮略圖等比例無損壓縮,可填充空白區域補充色

2024-05-04 23:18:21
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


<?php
error_reporting( E_ALL );
// 測試
imagezoom('1.jpg', '2.jpg', 400, 300, '#FFFFFF');
/*
php縮略圖函數:
等比例無損壓縮,可填充補充色 author: 華仔
主持格式:
bmp 、jpg 、gif、png
param:
@srcimage : 要縮小的圖片
@dstimage : 要保存的圖片
@dst_width: 縮小寬
@dst_height: 縮小高
@backgroundcolor: 補充色 如:#FFFFFF 支持 6位 不支持3位
*/
function imagezoom( $srcimage, $dstimage, $dst_width, $dst_height, $backgroundcolor ) {
// 中文件名亂碼
if ( PHP_OS == 'WINNT' ) {
$srcimage = iconv('UTF-8', 'GBK', $srcimage);
$dstimage = iconv('UTF-8', 'GBK', $dstimage);
}
$dstimg = imagecreatetruecolor( $dst_width, $dst_height );
$color = imagecolorallocate($dstimg
, hexdec(substr($backgroundcolor, 1, 2))
, hexdec(substr($backgroundcolor, 3, 2))
, hexdec(substr($backgroundcolor, 5, 2))
);
imagefill($dstimg, 0, 0, $color);
if ( !$arr=getimagesize($srcimage) ) {
echo "要生成縮略圖的文件不存在";
exit;
}
$src_width = $arr[0];
$src_height = $arr[1];
$srcimg = null;
$method = getcreatemethod( $srcimage );
if ( $method ) {
eval( '$srcimg = ' . $method . ';' );
}
$dst_x = 0;
$dst_y = 0;
$dst_w = $dst_width;
$dst_h = $dst_height;
if ( ($dst_width / $dst_height - $src_width / $src_height) > 0 ) {
$dst_w = $src_width * ( $dst_height / $src_height );
$dst_x = ( $dst_width - $dst_w ) / 2;
} elseif ( ($dst_width / $dst_height - $src_width / $src_height) < 0 ) {
$dst_h = $src_height * ( $dst_width / $src_width );
$dst_y = ( $dst_height - $dst_h ) / 2;
}
imagecopyresampled($dstimg, $srcimg, $dst_x
, $dst_y, 0, 0, $dst_w, $dst_h, $src_width, $src_height);
// 保存格式
$arr = array(
'jpg' => 'imagejpeg'
, 'jpeg' => 'imagejpeg'
, 'png' => 'imagepng'
, 'gif' => 'imagegif'
, 'bmp' => 'imagebmp'
);
$suffix = strtolower( array_pop(explode('.', $dstimage ) ) );
if (!in_array($suffix, array_keys($arr)) ) {
echo "保存的文件名錯誤";
exit;
} else {
eval( $arr[$suffix] . '($dstimg, "'.$dstimage.'");' );
}
imagejpeg($dstimg, $dstimage);
imagedestroy($dstimg);
imagedestroy($srcimg);
}
function getcreatemethod( $file ) {
$arr = array(
'474946' => "imagecreatefromgif('$file')"
, 'FFD8FF' => "imagecreatefromjpeg('$file')"
, '424D' => "imagecreatefrombmp('$file')"
, '89504E' => "imagecreatefrompng('$file')"
);
$fd = fopen( $file, "rb" );
$data = fread( $fd, 3 );
$data = str2hex( $data );
if ( array_key_exists( $data, $arr ) ) {
return $arr[$data];
} elseif ( array_key_exists( substr($data, 0, 4), $arr ) ) {
return $arr[substr($data, 0, 4)];
} else {
return false;
}
}
function str2hex( $str ) {
$ret = "";
for( $i = 0; $i < strlen( $str ) ; $i++ ) {
$ret .= ord($str[$i]) >= 16 ? strval( dechex( ord($str[$i]) ) )
: '0'. strval( dechex( ord($str[$i]) ) );
}
return strtoupper( $ret );
}
// BMP 創建函數 php本身無
function imagecreatefrombmp($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'])
{
if ($BMP['bits_per_pixel'] == 24)
$COLOR = unpack("V",substr($IMG,$P,3).$VIDE);
elseif ($BMP['bits_per_pixel'] == 16)
{
$COLOR = unpack("n",substr($IMG,$P,2));
$COLOR[1] = $PALETTE[$COLOR[1]+1];
}
elseif ($BMP['bits_per_pixel'] == 8)
{
$COLOR = unpack("n",$VIDE.substr($IMG,$P,1));
$COLOR[1] = $PALETTE[$COLOR[1]+1];
}
elseif ($BMP['bits_per_pixel'] == 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];
}
elseif ($BMP['bits_per_pixel'] == 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];
}
else
return FALSE;
imagesetpixel($res,$X,$Y,$COLOR[1]);
$X++;
$P += $BMP['bytes_per_pixel'];
}
$Y--;
$P+=$BMP['decal'];
}
fclose($f1);
return $res;
}
// BMP 保存函數,php本身無
function imagebmp ($im, $fn = false)
{
if (!$im) return false;
if ($fn === false) $fn = 'php://output';
$f = fopen ($fn, "w");
if (!$f) return false;
$biWidth = imagesx ($im);
$biHeight = imagesy ($im);
$biBPLine = $biWidth * 3;
$biStride = ($biBPLine + 3) & ~3;
$biSizeImage = $biStride * $biHeight;
$bfOffBits = 54;
$bfSize = $bfOffBits + $biSizeImage;
fwrite ($f, 'BM', 2);
fwrite ($f, pack ('VvvV', $bfSize, 0, 0, $bfOffBits));
fwrite ($f, pack ('VVVvvVVVVVV', 40, $biWidth, $biHeight, 1, 24, 0, $biSizeImage, 0, 0, 0, 0));
$numpad = $biStride - $biBPLine;
for ($y = $biHeight - 1; $y >= 0; --$y)
{
for ($x = 0; $x < $biWidth; ++$x)
{
$col = imagecolorat ($im, $x, $y);
fwrite ($f, pack ('V', $col), 3);
}
for ($i = 0; $i < $numpad; ++$i)
fwrite ($f, pack ('C', 0));
}
fclose ($f);
return true;
}
?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本精品视频在线播放| 日韩美女免费线视频| 久久亚洲电影天堂| 欧美日韩国产在线| 欧美精品免费看| 成人黄色影片在线| 一区二区成人av| 国语自产偷拍精品视频偷| 欧美成人午夜剧场免费观看| 欧美精品第一页在线播放| 欧美成人午夜免费视在线看片| 国产精品免费福利| 国产日韩欧美在线视频观看| 深夜成人在线观看| 亚洲精品欧美极品| 久久国内精品一国内精品| 国产精品v片在线观看不卡| 久久久国产精品亚洲一区| 欧美在线观看视频| 成人激情视频免费在线| 欧美黑人狂野猛交老妇| 亚洲女人天堂色在线7777| 国产精品日韩在线一区| 中文字幕av一区二区三区谷原希美| 在线视频免费一区二区| 91精品一区二区| 欧美性色xo影院| 精品中文字幕在线| 亚洲人成在线观看网站高清| 国产日韩精品一区二区| 欧美一级片一区| 欧美高清在线播放| 亚洲成色www8888| 欧美视频一区二区三区…| 精品久久久久久中文字幕| 日韩美女写真福利在线观看| 久久精品国产欧美亚洲人人爽| 中日韩午夜理伦电影免费| 91亚洲精品久久久| 欧美疯狂xxxx大交乱88av| 久久久久久久网站| 亚洲性猛交xxxxwww| 久久国产精品影视| 91亚洲精品在线观看| 国产精品99导航| 亚洲网址你懂得| 亚洲欧美日韩精品久久奇米色影视| 亚洲xxxx在线| 国产精品久久久久999| 亚洲国产精品人人爽夜夜爽| 日韩精品福利在线| 国产精品偷伦免费视频观看的| 欧美中文字幕视频| 欧美日韩国产专区| 日本在线观看天堂男亚洲| 日韩在线欧美在线国产在线| 97在线视频免费播放| 日本乱人伦a精品| 88国产精品欧美一区二区三区| 亚洲精品国产精品国自产在线| 欧美激情a在线| 深夜福利国产精品| 国内精品小视频| 亚洲人成电影网站色xx| 日韩免费高清在线观看| 91成人在线观看国产| 成人免费视频xnxx.com| 激情成人中文字幕| 亚洲黄色有码视频| 国产精品最新在线观看| 日韩av电影在线网| 在线免费观看羞羞视频一区二区| 91av在线播放| 日韩欧美一区二区在线| 国产精品久久久久福利| 日韩精品在线电影| 久久久成人精品视频| 九九热精品视频| 精品国偷自产在线| 久久精品小视频| 亚洲精品国产suv| 亚洲第一在线视频| 国产午夜精品久久久| 久久精品国产久精国产思思| 一本一道久久a久久精品逆3p| 欧美在线xxx| 91精品久久久久久久久| 亚洲天堂av在线免费观看| 成人福利网站在线观看| 亚洲欧美在线第一页| 成人美女免费网站视频| 久久久久九九九九| 欧美成人黑人xx视频免费观看| 国产精品视频免费在线观看| 91久热免费在线视频| 精品自在线视频| 欧美做爰性生交视频| 亚洲一级黄色片| 亚洲精品中文字幕有码专区| 亚洲国产精品va在线观看黑人| 精品国产成人在线| 久久久久久国产| 亚洲韩国日本中文字幕| 麻豆乱码国产一区二区三区| 欧美大奶子在线| 欧美影院成年免费版| 成人中心免费视频| 欧美性猛交xxxx乱大交极品| 欧美老女人性视频| 久久99精品久久久久久噜噜| 成人免费福利视频| 日韩国产一区三区| 成人精品一区二区三区电影免费| 日韩h在线观看| 亚洲国产精品va在线观看黑人| 91夜夜揉人人捏人人添红杏| 91网站在线看| 亚洲丁香久久久| 亚洲精品久久7777777| 欧美专区在线观看| 69av成年福利视频| 国产精品网站入口| 疯狂蹂躏欧美一区二区精品| 国产亚洲激情视频在线| 亚洲欧美国产精品va在线观看| 精品国产拍在线观看| 色无极影院亚洲| 国产精品美女网站| 国产精品吴梦梦| 日韩av一区二区在线观看| 成人av色在线观看| 日韩视频在线一区| 国产精品高潮呻吟久久av黑人| 精品国产欧美成人夜夜嗨| 国产精品视频久久| 精品福利樱桃av导航| 成人av电影天堂| 亚洲成av人影院在线观看| 国产精品久久久久久久久久久久| www.日韩视频| 91丝袜美腿美女视频网站| 欧洲美女7788成人免费视频| 亚洲一区亚洲二区| 亚洲第一区在线观看| 欧美一区三区三区高中清蜜桃| 日韩精品免费一线在线观看| 黑人巨大精品欧美一区免费视频| 亚洲免费伊人电影在线观看av| 国产日韩欧美中文| 九九久久久久久久久激情| 欧美影院成年免费版| 欧美日韩中文字幕| 国产日韩在线一区| 日本19禁啪啪免费观看www| 欧美性生活大片免费观看网址| 色婷婷av一区二区三区久久| 日韩av一卡二卡| 精品久久久久久久久久ntr影视| 欧美日韩高清区| 成人网中文字幕| 午夜精品国产精品大乳美女| 成人网在线免费看| 91啪国产在线| 欧美一级bbbbb性bbbb喷潮片|