ProfiPHPProfiPHP
Категория: Поддержка OUR-CMS

Оптимизация изображений в OUR-CMS

На сайте возможна ситуация, когда изображения, которые в большинстве случаев несут чисто ознакомительный характер, занимают очень много места. Если с техническими характеристиками хостинга проблем нет, тогда нужно подумать о пользователях, которые загружают данные изображения. Посмотрите на следующие изображения:

Занимает 149 КБ.
А теперь на тоже самое изображение, но оптимизированное:

Занимает 40 КБ.

Разница в качестве изображении минимальная. Была специально выбрана сложная картинка, чтобы можно было максимально видеть различие данных изображений.

Как видно, второе изображение практически не отличается от первого, но размер в 3 раза меньше, что в свою очередь позволит значительно быстрее загрузится.

Данный скрипт оптимизирует по качеству все загруженные изображения. Расширение изображений не изменяется. Скрипт использует Класс для работы с изображениями PHP

Для установки скопируйте содержимое архива Image_optimization в корень сайта и запустите его:
http://yousite/image_optimization.php
Важно: Не забудьте сделать резервную копию папки с изображениями (userfiles/image/) сайта перед использованием данного скрипта.

Данный скрипт можно использовать на всех допустимых веб-ресурсах. Для этого достаточно указать директорию с изображениями в строке:
searchImages( $_SERVER['DOCUMENT_ROOT'].'/userfiles/image' );
Код исполняемого файла:
<?php
function get_size( $bytes )
{
if ( $bytes < 1000 * 1024 ) {
return number_format( $bytes / 1024, 2 ) . " KB";
}
elseif ( $bytes < 1000 * 1048576 ) {
return number_format( $bytes / 1048576, 2 ) . " MB";
}
elseif ( $bytes < 1000 * 1073741824 ) {
return number_format( $bytes / 1073741824, 2 ) . " GB";
}
else {
return number_format( $bytes / 1099511627776, 2 ) . " TB";
}
}
$oldfilesize = 0;
$newfilesize = 0;
$numimages = 0;
function searchImages( $path )
{
global $oldfilesize, $newfilesize, $numimages;
if ( $optimization_cat = glob( $path.'/*') )
{
foreach ( $optimization_cat as $object )
{
if ( is_dir( $object ) ) {
searchImages( $object );
}
else {
$path_parts = pathinfo( $object, PATHINFO_DIRNAME ).'/';
$path_filename = pathinfo( $object, PATHINFO_FILENAME );
$oldfilesize = $oldfilesize + filesize( $object );

$img = new ImageResize( $object );
$images = $img->resize( 600 )->save( $path_parts, $path_filename, false, 75 );

$newfilesize = $newfilesize + filesize( $object );
$numimages++;
}
}
}
}
include_once( $_SERVER['DOCUMENT_ROOT'].'/image.php' );
searchImages( $_SERVER['DOCUMENT_ROOT'].'/userfiles/image' );
echo '<p>Размер до оптимизации: '.get_size( $oldfilesize ).'.</p>
<p>Размер после оптимизации: '.get_size( $newfilesize ).'.</p>
<p>Количество изображений: '.$numimages.'</p>';
?>

Добавить комментарий

Имя:
Текст комментария: