这篇文章主要介绍了使用PHP生成图片的缩略图的方法,一些常见的图片格式都可以支持,需要的朋友可以参考下
功能:支持jpg,jpeg,gif,png,bmp图片格式,支持按原图片的比例进行缩放,可以选择在图片缩放的过程中是否需要对图片进行裁切,加入了图片质量控制,可以实现缩略图片质量最高化。完整类的代码如下:
srcimg=$img; $this->resize_width=$wid; $this->resize_height=$hei; $this->cut=$c; $this->quality=$quality; $this->type=strtolower(substr(strrchr($this->srcimg,'.'),1));//图片的类型 $this->initi_img();//初始化图象 $this -> dst_img($dstpath);//目标图象地址 @$this->width=imagesx($this->im); @$this->height=imagesy($this->im); $this->newimg();//生成图象 @ImageDestroy($this->im); } function newimg(){ $resize_ratio=($this->resize_width)/($this->resize_height);//改变后的图象的比例 @$ratio=($this->width)/($this->height);//实际图象的比例 if(($this->cut)=='1'){//裁图 if($img_func==='imagepng'&&(str_replace('.','',PHP_VERSION)>=512)){ //针对php版本大于5.12参数变化后的处理情况 $quality=9; } if($ratio>=$resize_ratio){//高度优先 $newimg=imagecreatetruecolor($this->resize_width,$this->resize_height); imagecopyresampled($newimg,$this->im,0,0,0,0,$this->resize_width,$this->resize_height,(($this->height)*$resize_ratio),$this->height); imagejpeg($newimg,$this->dstimg,$this->quality); } if($ratioresize_width,$this->resize_height); imagecopyresampled($newimg,$this->im,0,0,0,0,$this->resize_width,$this->resize_height,$this->width,(($this->width)/$resize_ratio)); imagejpeg($newimg,$this->dstimg,$this->quality); } }else{//不裁图 if($ratio>=$resize_ratio){ $newimg=imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio); imagecopyresampled($newimg,$this->im,0,0,0,0,$this->resize_width,($this->resize_width)/$ratio,$this->width,$this->height); imagejpeg($newimg,$this->dstimg,$this->quality); } if($ratioresize_height)*$ratio,$this->resize_height); @imagecopyresampled($newimg,$this->im,0,0,0,0,($this->resize_height)*$ratio,$this->resize_height,$this->width,$this->height); @imagejpeg($newimg,$this->dstimg,$this->quality); } } } function initi_img(){//初始化图象 if($this->type=='jpg' || $this->type=='jpeg'){ $this->im=imagecreatefromjpeg($this->srcimg); } if($this->type=='gif'){ $this->im=imagecreatefromgif($this->srcimg); } if($this->type=='png'){ $this->im=imagecreatefrompng($this->srcimg); } if($this->type=='wbm'){ @$this->im=imagecreatefromwbmp($this->srcimg); } if($this->type=='bmp'){ $this->im=$this->ImageCreateFromBMP($this->srcimg); } } function dst_img($dstpath){//图象目标地址 $full_length=strlen($this->srcimg); $type_length=strlen($this->type); $name_length=$full_length-$type_length; $name=substr($this->srcimg,0,$name_length-1); $this->dstimg=$dstpath; //echo $this->dstimg; } function ImageCreateFromBMP($filename){ //自定义函数处理bmp图片 if(!$f1=fopen($filename,"rb"))returnFALSE; $FILE=unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset",fread($f1,14)); if($FILE['file_type']!=19778)returnFALSE; $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']=0) { $X=0; while($X>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 returnFALSE; imagesetpixel($res,$X,$Y,$COLOR[1]); $X++; $P+=$BMP['bytes_per_pixel']; } $Y--; $P+=$BMP['decal']; } fclose($f1); return$res; } } ?>
使用方法很简单代码如下:
$resizeimage=new ResizeImage('upload/abc.bmp', '120', '90', '0', 'upload/xabc.bmp');
另外一个强大的PHP图片缩略图类:phpThumb
该类除了缩放图片外,还能将图片转换成不同的格式输出(比如将GIF格式的图片输出为PNG格式),其特色功能还包括色彩、特效等
官方网址:
We'll be using phpThumb , the open source PHP script to generate thumbnails on the fly.
Download and extract phpThumb to somewhere in your website folder. Now to use a rounded corner thumbnail of an image, simply use the img tag of HTML with src as

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

WebStorm Mac版
好用的JavaScript開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。