A total of two equal scale thumbnails can be used for reference
First, the class file, after instantiation can be used
Second, for the custom method, relatively lightweight
class file
Copy Code code as follows:
$resizeimage = new Resizeimage ("./shawn.jpg", "200", "100", "0", ". /pic/shawnsun.jpg ");
Instantiate the following class to generate thumbnails
Where the source file and thumbnail address can be the same, 200,100 representing width and height, the fourth parameter is optional 0 not screenshot, 1 for screenshots
Copy Code code as follows:
<?php
Class resizeimage{
Picture type
Public $type;
Actual width
Public $width;
Actual height
Public $height;
The width after the change
Public $resize _width;
Change the height of the post
Public $resize _height;
Whether or not to cut the map
Public $cut;
Source image
Public $srcimg;
Target Image Address
Public $dstimg;
Temporarily created image
Public $im;
function Resizeimage ($img, $wid, $hei, $c, $dstpath) {
$this--->srcimg = $img;
$this->resize_width = $wid;
$this->resize_height = $hei;
$this->cut = $c;
Type of picture
$this->type = Strtolower (substr (STRRCHR ($this->srcimg, "."), 1);
Initializing images
$this->initi_img ();
Target Image Address
$this->dst_img ($dstpath);
W & H
$this->width = imagesx ($this->im);
$this->height = Imagesy ($this->im);
Build image
$this->newimg ();
Imagedestroy ($this->im);
}
function newimg () {
The proportions of the altered image
$resize _ratio = ($this->resize_width)/($this->resize_height);
The proportions of the actual image
$ratio = ($this->width)/($this->height);
if (($this->cut) = = "1")
Drawing
{
if ($ratio >= $resize _ratio)
High priority
{
$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);
}
if ($ratio < $resize _ratio)
Width first
{
$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);
}
}
Else
Do not cut the figure
{
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);
}
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);
}
}
}
Initializing images
function initi_img () {
if ($this->type== "jpg")
{
$this->im = imagecreatefromjpeg ($this->srcimg);
}
if ($this->type== "gif")
{
$this->im = imagecreatefromgif ($this->srcimg);
}
if ($this->type== "PNG")
{
$this->im = imagecreatefrompng ($this->srcimg);
}
}
Image Destination Address
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;
}
}
?>
Custom Methods
Copy Code code as follows:
Thumbs (' Shawn.jpg ', ' shawnsun.jpg ', 100,100);
Parameter properties are similar to method one
Copy Code code as follows:
<?php
function thumbs ($FileName, $SaveTo, $SetW, $SetH) {
$IMGInfo = getimagesize ($FileName);
if (! $IMGInfo) return false;
if ($IMGInfo [' MIME ']== ' image/pjpeg] | | $IMGInfo [' MIME ']== ' Image/jpeg ') {
$ThisPhoto = Imagecreatefromjpeg ($FileName);
}elseif ($IMGInfo [' MIME ']== "image/x-png" | | | $IMGInfo [' MIME ']== ' Image/png ') {
$ThisPhoto = Imagecreatefrompng ($FileName);
}elseif ($IMGInfo [' MIME ']== "Image/gif") {
$ThisPhoto =imagecreatefromgif ($FileName);
}
$width = $IMGInfo [0];
$height = $IMGInfo [1];
$scalc = max ($width/$SetW, $height/$SetH);
$NW = Intval ($width/$scalc);
$NH = Intval ($height/$scalc);
echo "Thumbnail size: w$nw,h$nh <br/-->";
if ($SetW-$NW = = 1) {$nw = $SetW;}
if ($SetH-$nh = = 1) {$nh = $SetH;}
echo "+ fix 1 pixels: w$nw,h$nh<br>";
Fill width
if ($SetW-$nw > 0) {
$NH = $nh + (($NH/$NW) * ($SetW-$NW));
echo "* needs to be widened." ($SetW-$NW). ", accompany to fill up high." (($NH/$NW) * ($SetW-$NW)). " <br> ";
$NW = $SetW;
}
Fill High
if ($SetH-$nh > 0) {
$NW = $nw + (($NW/$NH) * ($SetH-$NH));
echo "* need to fill up." ($SetH-$nh). ", with a complementary width." (($NW/$NH) * ($SetH-$NH)). " <br> ";
$NH = $SetH;
}
$NW = Intval ($NW);
$NH = Intval ($NH);
echo "+ Correction size:w$nw,h$nh<br>";
$PX = ($SetW-$NW)/2;
$py = ($SetH-$NH)/2;
echo "Window size: W$setw,h$seth <br>";
echo "+ Offset correction: x$px,y$py <br>";
$NewPhoto =imagecreatetruecolor ($SetW, $SetH);
Imagecopyresized ($NewPhoto, $ThisPhoto, $px, $py, 0,0, $NW, $nh, $width, $height);
Imagejpeg ($NewPhoto, $SaveTo);
return true;
}
?>