最近给朋友修改网站时,帮客之家小编发现有一些网站的图片是png格式,并且图片文件非常大,差不多都在200kb以上,而同像素的jpg图片会小很多,于是在网上找了一下教程,现在将php将指定的图片格式转换为jpg并自动缩放成指定大小的方法发布给大家,支持jpg、bmp、png和gif格式。
不说别的了,直接上代码,此代码不可能直接复制到你的网站使用,需要你懂一些php知识,如果您不懂php,建议阅读烈火提供的php中文手册。
copy to clipboard引用的内容:[www.bkjia.com]= 0 )
{
$x = 0 ;
while ( $x {
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 ;
}
// 烈火網 bkjia.com 欢迎复制,拒绝恶意采集 liehuo.net
function imagetojpg($srcfile,$dstfile,$towidth,$toheight)
{
$quality=80;
$data = @getimagesize($srcfile);
switch ($data['2'])
{
case 1:
$im = imagecreatefromgif($srcfile);
break;
case 2:
$im = imagecreatefromjpeg($srcfile);
break;
case 3:
$im = imagecreatefrompng($srcfile);
break;
case 6:
$im = imagecreatefrombmp( $srcfile );
break;
}
// $dstx=$srcw=@imagesx($im);
// $dsty=$srch=@imagesy($im);
$srcw=@imagesx($im);
$srch=@imagesy($im);
$dstx=$towidth;
$dsty=$toheight;
$ni=@imagecreatetruecolor($dstx,$dsty);
@imagecopyresampled($ni,$im,0,0,0,0,$dstx,$dsty,$srcw,$srch);
@imagejpeg($ni,$dstfile,$quality);
@imagedestroy($im);
@imagedestroy($ni);
}
//用法:
//imagetojpg('源文件名','目标文件名',目标宽,目标高);
?>
http://www.bkjia.com/phpjc/363942.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/363942.htmltecharticle最近给朋友修改网站时,烈火网小编发现有一些网站的图片是png格式,并且图片文件非常大,差不多都在200kb以上,而同像素的jpg图片会小...