Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Redimensionar png transparente com classe PHP

02-03-2016 11:47

Nesse post vou mostrar uma classe PHP para redimensionar arquivos png, gif e jpg.
Esse script redimensiona também imagens transparentes.

Para usar esse script criar um arquivo chamado resize.php e colocar o seguinte código:

<?php /** * Resize image class will allow you to resize an image * * Can resize to exact size * Max width size while keep aspect ratio * Max height size while keep aspect ratio * Automatic while keep aspect ratio */ class ResizeImage { private $ext; private $image; private $newImage; private $origWidth; private $origHeight; private $resizeWidth; private $resizeHeight; /** * Class constructor requires to send through the image filename * * @param string $filename - Filename of the image you want to resize */ public function __construct( $filename ) { if(file_exists($filename)) { $this->setImage( $filename ); } else { throw new Exception('Image ' . $filename . ' can not be found, try another image.'); } } /** * Set the image variable by using image create * * @param string $filename - The image filename */ private function setImage( $filename ) { $size = getimagesize($filename); $this->ext = $size['mime']; switch($this->ext) { // Image is a JPG case 'image/jpg': case 'image/jpeg': // create a jpeg extension $this->image = imagecreatefromjpeg($filename); $background = imagecolorallocate($this->image, 0, 0, 0); ImageColorTransparent($this->image, $background); // make the new temp image all transparent imagealphablending($this->image, false); // turn off the alpha blending to keep the alpha break; // Image is a GIF case 'image/gif': $this->image = @imagecreatefromgif($filename); $background = imagecolorallocate($this->image, 0, 0, 0); ImageColorTransparent($this->image, $background); // make the new temp image all transparent imagealphablending($this->image, false); // turn off the alpha blending to keep the alpha break; // Image is a PNG case 'image/png': $this->image = @imagecreatefrompng($filename); $background = imagecolorallocate($this->image, 0, 0, 0); ImageColorTransparent($this->image, $background); // make the new temp image all transparent imagealphablending($this->image, false); // turn off the alpha blending to keep the alpha break; // Mime type not found default: throw new Exception("File is not an image, please use another file type.", 1); } $this->origWidth = imagesx($this->image); $this->origHeight = imagesy($this->image); } /** * Save the image as the image type the original image was * * @param String[type] $savePath - The path to store the new image * @param string $imageQuality - The qulaity level of image to create * * @return Saves the image */ public function saveImage($savePath, $imageQuality="100", $download = false) { switch($this->ext) { case 'image/jpg': case 'image/jpeg': // Check PHP supports this file type if (imagetypes() & IMG_JPG) { imagejpeg($this->newImage, $savePath, $imageQuality); } break; case 'image/gif': // Check PHP supports this file type if (imagetypes() & IMG_GIF) { imagegif($this->newImage, $savePath); } break; case 'image/png': $invertScaleQuality = 9 - round(($imageQuality/100) * 9); // Check PHP supports this file type if (imagetypes() & IMG_PNG) { imagepng($this->newImage, $savePath, $invertScaleQuality); } break; } if($download) { header('Content-Description: File Transfer'); header("Content-type: application/octet-stream"); header("Content-disposition: attachment; filename= ".$savePath.""); readfile($savePath); } imagedestroy($this->newImage); } /** * Resize the image to these set dimensions * * @param int $width - Max width of the image * @param int $height - Max height of the image * @param string $resizeOption - Scale option for the image * * @return Save new image */ public function resizeTo( $width, $height, $resizeOption = 'default' ) { switch(strtolower($resizeOption)) { case 'exact': $this->resizeWidth = $width; $this->resizeHeight = $height; break; case 'maxwidth': $this->resizeWidth = $width; $this->resizeHeight = $this->resizeHeightByWidth($width); break; case 'maxheight': $this->resizeWidth = $this->resizeWidthByHeight($height); $this->resizeHeight = $height; break; default: if($this->origWidth > $width || $this->origHeight > $height) { if ( $this->origWidth > $this->origHeight ) { $this->resizeHeight = $this->resizeHeightByWidth($width); $this->resizeWidth = $width; } else if( $this->origWidth < $this->origHeight ) { $this->resizeWidth = $this->resizeWidthByHeight($height); $this->resizeHeight = $height; } else { $this->resizeWidth = $width; $this->resizeHeight = $height; } } else { $this->resizeWidth = $width; $this->resizeHeight = $height; } break; } $this->newImage = imagecreatetruecolor($this->resizeWidth, $this->resizeHeight); imagealphablending($this->newImage, true); imagecopyresampled($this->newImage, $this->image, 0, 0, 0, 0, $this->resizeWidth, $this->resizeHeight, $this->origWidth, $this->origHeight); } /** * Get the resized height from the width keeping the aspect ratio * * @param int $width - Max image width * * @return Height keeping aspect ratio */ private function resizeHeightByWidth($width) { return floor(($this->origHeight/$this->origWidth)*$width); } /** * Get the resized width from the height keeping the aspect ratio * * @param int $height - Max image height * * @return Width keeping aspect ratio */ private function resizeWidthByHeight($height) { return floor(($this->origWidth/$this->origHeight)*$height); } } ?>

Para usar esse script usar esse exemplo:

<?php // CARREGANDO A CLASSE require("resize.php"); // IMAGEM ORIGINAL $resize = new ResizeImage('fotor.gif'); // NOVO TAMANHO PARA A FOTO REDIMENSIONADA $resize->resizeTo(50, 50, 'exact'); // NOVO NOME PARA FOTO REDIMENSIONADA $resize->saveImage('avatar2.gif'); ?>

Fonte: http://www.paulund.co.uk/resize-image-class-php
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado