Разработка сайтов

Сжатие изображений средствами php GD(если на сервере нет jpegoptim)

<?
$arCompressedJpegs=new compressImagesInDir("/var/www/ph316450/data/www/lestar-cnc.ru/upload",90);
echo "<pre>";
print_r($arCompressedJpegs->getCompressedImages());
echo "</pre>";
class compressImagesInDir{
public $compressedImages;
public function getCompressedImages(){
return $this->compressedImages;
}
public function compressImagesInDir($dir,$quantity){
$arImagesToCompress=$this->getImagesInDir($dir);
foreach($arImagesToCompress as $imagePath){
$this->compressImage($imagePath,$imagePath,$quantity);
}
$this->compressedImages=$arImagesToCompress;
}
private function getImagesInDir($dir){
$arImages=array();
$files = scandir($dir);
foreach ($files as $file) {
if ($file == '.' || $file == '..') continue;
$fullfilename = $dir . '/' . $file;
if ($this->is_image($fullfilename)) {
$arImages[] = $fullfilename;
}
if (is_dir($fullfilename)) {
$arReturn = $this->getImagesInDir($fullfilename);
if ($arReturn and is_array($arReturn)) {
$arImages = array_merge($arImages, $arReturn);
}
}
}
return $arImages;
}

private function is_image($filename){
$is = @getimagesize($filename);
if (!$is) {
return false;
}elseif ($is['mime'] != 'image/jpeg'){
return false;
} elseif (!in_array($is[2], array(1, 2, 3))) {
return false;
} else {
return true;
}
}

private function compressImage($source_url, $destination_url, $quality){
$info = getimagesize($source_url);

if ($info['mime'] == 'image/jpeg') $image = imagecreatefromjpeg($source_url);
//save file
if($image)
imagejpeg($image, $destination_url, $quality);
return $destination_url;
}
}
?>
Подписка на блог Подпишись на новые материалы от US STUDIO и вы не пропустите интересные статьи от нашей компании