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生成縮略圖片的類 */ class ResizeImage{ public $type;//圖片類型 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));//圖片的類型 $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

Mastering the commonly used operators of PHP can deal with most development scenarios, mainly including: 1. Arithmetic operators ( , -, , /, %) are used for mathematical calculations and support dynamic variable operations, but pay attention to the problems that may be caused by automatic type conversion; 2. Comparison operators (==, ===, !=, >

In PHP, there are mainly two ways to define constants: define() function and const keyword. define() is a runtime function that can dynamically define constants at any location; while const is a language structure processed in the compilation stage and must be used directly in global or in classes and cannot be placed in conditional statements, loops or functions. The difference between the two is mainly reflected in: 1. define() supports dynamic definition, suitable for situations determined based on configuration files; 2. const is suitable for use in class definition constants and namespaces, which are more readable and organized and have slightly better performance; 3. Const needs to pay attention to scope issues when defining constants, such as namespace prefixes that cannot be omitted; 4. Both do not support modifying defined values, but define()

TostartwithPHP,firstsetupalocalserverenvironmentusingtoolslikeXAMPPorMAMP,thenwriteabasicPHPscriptusingechotodisplaytext,andfinallyintegratePHPwithHTMLfordynamiccontent.1.ChooseatoollikeXAMPPforWindowsorMAMPforMactoinstallApache,MySQL,andPHP.2.PlaceP

There are three common annotation methods in PHP, namely single-line comments, multi-line comments and document block comments. 1. Single-line comments use // or #, suitable for short descriptions, and can be placed at the end of the code line or a separate line; 2. Multi-line comments start with / and end with /, suitable for detailed descriptions such as function functions or version records; 3. Document block comments start with /**, combined with tags such as @param, @return, etc., can be recognized by IDE and tools for generating code prompts and documents. In addition, it is recommended to write comments for functions and classes, especially public methods; add interpretative comments in complex logic; avoid meaningless comments; and not submit commented debug code. Mastering these annotation methods and usage suggestions will help improve code readability and maintenance efficiency.

There are three ways to add comments in PHP: //, # and //, among which // is the most commonly used. Comments can improve code readability and maintenance, and should explain "why" rather than "what was done" while keeping it updated. Functions and classes should indicate functions and input and output parameters, and inline comments can be used to explain complex logic. The rational use of comments helps team collaboration and post-debugs to avoid excessive or outdated comments.

There are four common problems when installing PHP, namely: 1. PHP cannot start or report an error. You should check the php.ini configuration error and verify it with php-t; 2. When the installation of the extension fails, confirm whether the underlying dependency is fully installed; 3. The web server cannot parse the PHP file and needs to check whether PHP-FPM is enabled and match the server configuration; 4. For multiple version conflicts, you can view the current use version through whichphp and php-v and adjust the environment variables or switch tools. When encountering problems, you should gradually check the configuration and log to locate the cause.

Comments should explain "why" rather than "what was done", such as explaining business reasons rather than repeating code operations; 2. Add overview comments before complex logic, briefly explaining the process steps to help establish an overall impression; 3. Comments the "strange" code to explain the intention of unconventional writing, and avoid misunderstandings as bugs; 4. Comments are recommended to be concise, use // in single lines, use // in functions/classes/*.../ in order to maintain a unified style; 5. Avoid issues such as out of synchronization with the comments, too long comments or not deletion of the code, and ensure that the comments truly improve the readability and maintenance of the code.

This article answers several key questions for beginners to learn PHP. First, the method to quickly get started with basic syntax is to practice basic structures such as variables, conditional judgment and loops, such as using $ to define variables, echo output content, and if judgment conditions; second, the way to use PHP and HTML is to embed PHP code into HTML, wrap it, and pay attention to running in a server environment that supports PHP; third, the process of handling form submission and database connection includes: front-end submission of forms, PHP receives data, verifying data, using mysqli or PDO and other methods to connect to the database and perform insertion operations. At the same time, it is recommended to use ORM tools to improve security and convenience. The article emphasizes that learning PHP should focus on hands-on practice and gradually accumulate experience.
