PHP generation and so on than the thumbnail class and custom function sharing _php instances

Source: Internet
Author: User
Tags imagejpeg

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;
}

?>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.