How to implement image thumbnails in php, _PHP tutorial
Jul 12, 2016 am 08:55 AMHow to implement image thumbnails in php,
The functions implemented by this code are as follows:
Supports jpg, jpeg, gif, png, bmp image formats, supports scaling according to the proportion of the original image, you can choose whether to crop the image during the image scaling process, and added image quality control to achieve reduction. Optimize picture quality.
The code of the complete class is as follows:
<?php /** * 功能:php生成縮略圖片的類(lèi) */ class ResizeImage{ public $type;//圖片類(lèi)型 public $width;//實(shí)際寬度 public $height;//實(shí)際高度 public $resize_width;//改變后的寬度 public $resize_height;//改變后的高度 public $cut;//是否裁圖 public $srcimg;//源圖象 public $dstimg;//目標(biāo)圖象地址 public $im;//臨時(shí)創(chuàng)建的圖象 public $quality;//圖片質(zhì)量 function resizeimage($img,$wid,$hei,$c,$dstpath,$quality=100){ $this->srcimg=$img; $this->resize_width=$wid; $this->resize_height=$hei; $this->cut=$c; $this->quality=$quality; $this->type=strtolower(substr(strrchr($this->srcimg,'.'),1));//圖片的類(lèi)型 $this->initi_img();//初始化圖象 $this -> dst_img($dstpath);//目標(biāo)圖象地址 @$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);//實(shí)際圖象的比例 if(($this->cut)=='1'){//裁圖 if($img_func==='imagepng'&&(str_replace('.','',PHP_VERSION)>=512)){ //針對(duì)php版本大于5.12參數(shù)變化后的處理情況 $quality=9; } if($ratio>=$resize_ratio){//高度優(yōu)先 $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($ratio<$resize_ratio){//寬度優(yōu)先 $newimg=imagecreatetruecolor($this->resize_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($ratio<$resize_ratio){ @$newimg=imagecreatetruecolor(($this->resize_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){//圖象目標(biāo)地址 $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){ //自定義函數(shù)處理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']<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 returnFALSE; imagesetpixel($res,$X,$Y,$COLOR[1]); $X++; $P+=$BMP['bytes_per_pixel']; } $Y--; $P+=$BMP['decal']; } fclose($f1); return$res; } } ?>
The usage is very simple and the code is as follows:
$resizeimage=new ResizeImage('upload/abc.bmp', '120', '90', '0', 'upload/xabc.bmp');
The above code is the method of implementing image thumbnails in PHP shared by the editor. I hope it will be helpful to everyone!
Articles you may be interested in:
- php gd2 upload pictures/text watermarks/picture watermarks/proportional thumbnails/implementation code
- Super easy to use php upload Picture class (random name, thumbnail, watermark)
- PHP uses GD library to generate high-quality thumbnail pictures
- PHPThumb PHP picture thumbnail gallery
- php picture Crop and zoom to generate thumbnails that meet your needs
- Use the gd library to implement PHP server-side image cropping and thumbnail generation function sharing
- PHP example of uploading images to generate thumbnails
- PHP image scaling to generate thumbnail function sharing
- jquery php ajax displays the upload progress of multiple image uploads and generates thumbnail code
- php implements scaling to the specified size to generate uploaded image thumbnails Method
- How to generate image thumbnails in php

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

TosettherighttimezoneinPHP,usedate_default_timezone_set()functionatthestartofyourscriptwithavalididentifiersuchas'America/New_York'.1.Usedate_default_timezone_set()beforeanydate/timefunctions.2.Alternatively,configurethephp.inifilebysettingdate.timez

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

ThePhpfunctionSerialize () andunserialize () AreusedtoconvertcomplexdaTastructdestoresintostoraSandaBackagain.1.Serialize () c OnvertsdatalikecarraysorobjectsraystringcontainingTypeandstructureinformation.2.unserialize () Reconstruct theoriginalatataprom

You can embed PHP code into HTML files, but make sure that the file has an extension of .php so that the server can parse it correctly. Use standard tags to wrap PHP code, insert dynamic content anywhere in HTML. In addition, you can switch PHP and HTML multiple times in the same file to realize dynamic functions such as conditional rendering. Be sure to pay attention to the server configuration and syntax correctness to avoid problems caused by short labels, quotation mark errors or omitted end labels.

The key to writing clean and easy-to-maintain PHP code lies in clear naming, following standards, reasonable structure, making good use of comments and testability. 1. Use clear variables, functions and class names, such as $userData and calculateTotalPrice(); 2. Follow the PSR-12 standard unified code style; 3. Split the code structure according to responsibilities, and organize it using MVC or Laravel-style catalogs; 4. Avoid noodles-style code and split the logic into small functions with a single responsibility; 5. Add comments at key points and write interface documents to clarify parameters, return values ??and exceptions; 6. Improve testability, adopt dependency injection, reduce global state and static methods. These practices improve code quality, collaboration efficiency and post-maintenance ease.

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas
