Изменение размера изображения средствами PHP. ResizeImage. Convert imageType

Изменение размера изображения средствами PHP. ResizeImage. Convert imageType


freelanceland
Ищете фрилансера для выполнения задач?
Класс ResizeImage на PHP.
Изменение размера изображения.
Convert imageType - конвертация типа изображения.

class SimpleResizeImage {

var $image;
var $image_type;

/**
* @param $filename
*/
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}

/**
* @param $filename
* @param int $image_type
* @param int $compression
* @param null $permissions
*/
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}

/**
* @param int $image_type
*/
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}

/**
* @param $height
*/
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}

/**
* @param $width
*/
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}

/**
* @param $width
* @param $height
*/
function resizeToWidthHeight($width,$height) {
if($this->getWidth()>$width){
$this->resizeToWidth($width);
}
if($this->getheight()>$height){
$this->resizeToHeight($height);
}
}

/**
* @param $scale
*/
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}

/**
* @param $width
* @param $height
*/
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}

Следующий участок кода загрузит изображение image.jpg, изменить его ширину до 400 пикселей и высоту до 200 пикселей, а затем сохранит как image1.jpg.

$image = new SimpleResizeImage();
$image->load('image.jpg');
$image->resize(400, 200);
$image->save('image1.jpg');

Если необходимо изменить размеры изображения, основываясь только на ширине и при этом сохранить его пропорции, то сценарий сам выберет необходимую высоту. Для этого необходимо использовать метод resizeToWidth.
$image = new SimpleResizeImage();
$image->load('image.jpg');
$image->resizeToWidth(250);
$image->save('image1.jpg');

Возможно вы пожелаете изменить размер в процентном соотношении от его оригинала. Для этого существует метод scale, в качестве параметра которому передаются проценты.
$image = new SimpleResizeImage();
$image->load('image.jpg');
$image->scale(50);
$image->save('image1.jpg');
У данного класса есть еще один очень полезный метод output, который позволяет выводить изображения прямо в браузер, без предварительного сохранения. Данный метод может быть очень полезен при создании миниатюр.
$image = new SimpleResizeImage();
$image->load('image.jpg');
$image->resizeToWidth(150);
$image->output();

Изменить пропорционально размер картинки
$image = new SimpleResizeImage();
$image->load($img);
$image->resizeToWidthHeight(800,600);
$image->save('image1.jpg');

Также читают

DRY - Don’t repeat yourself - Не повторяйся
mpdf 6.0 - HTML to PDF на PHP
PHP

Возврат к списку