Уменьшаем размер картинок

У меня на компьютере сохранено 1000 картинок большого размера. Можно сделать программу, которая автоматически уменьшит их размер, не хочется мучиться в Фотошопе, их учменьшая?

Это практическая задача, библиотека GD предоставляет возможность сделать такой скрипт. Итак, есть папка prikol, в ней лежат картинки в формате .jpeg (скрипт сделан для работы только с этим форматом), мы автоматически уменьшим размер картинок и сохраним их в той же папке.
<?php
    // имя папки, где лежат картинки
$papka = "prikol";

    // время выполнения сценария не ограничено
    // если не сделать так, то при большом количестве
    // картинок время одного процесса истечёт, что
    // нам не надо, поэтому ставим set_time_limit (0);
set_time_limit (0);

    // качество сохраняемой картинки в процентах от 
    // оригинала можете ставить от 0 до 100, это проценты. 
    // чем больше это число, тем с большим качеством 
    // сохранится новая картинка
$qulity = 70;

    // максимальный размер стороны нового фото в пикселях
    // все картинки приведёт к этому размеру, то есть 
    // сони все танут одинаковыми 
$size_max = 600;

    // подключает модуль GD динамически, если она не подключена
    // если выдаст Нет файла библиотеки, то нет у вас модуля GD
$bibl_ext = dirname ($_SERVER['SCRIPT_FILENAME']).'/extensions/php_gd.dll';
if ( !extension_loaded ('gd') and is_file ($bibl_ext)){ dl ("extensions/php_gd.dll"); }
if ( !extension_loaded ('gd')) { print "Нет файла библиотеки $bibl_ext"; exit ;}

    // вспомогательная функция, определяет тип файла
function TypeFile ($img_name){
$arr = GetImageSize ($img_name);
return $arr[2]; 
}

    // вспомогательная функция, выводим в программу из 
    // фотографии графический объект
function LoadImage ($img_name){
if (TypeFile($img_name)==2) { 
$im = ImageCreateFromJpeg($img_name); 
return $im; 
}
return false; 
}

    // основная функция, которая уменьшит все фото в папке $path
function open_dir_and_small ( $path ) { 
global $qulity, $size_max;
$dh = opendir ($path);
while ($entry = readdir ($dh)){
if ($entry != "." and $entry != ".."){
$file = $path."/".$entry;
$old = LoadImage($file);
if ($old=='false' or preg_match ("~new~",$entry)){ continue; }
$w = ImageSX ($old); 
$h = ImageSY ($old);
if ( preg_match ("/(.+)(\..+)/",$file,$arr)){
$path_new = $arr[1].'_new'.$arr[2];
if ($w > $h){ $w_new = $size_max; $h_new = ceil ($w_new * $h/$w); }
else { $h_new = $size_max; $w_new = ceil ($h_new * $w/$h); } 
$new = imageCreate ($w_new, $h_new);
ImageCopyResized($new, $old, 0, 0, 0, 0, $w_new, $h_new, $w, $h);
imageJpeg ($new, $path_new, $qulity); 
imageDestroy ($new); 
print $path_new."<br>\n";
}
imageDestroy ($old); 
clearstatcache ();
}
} 
closedir ($dh);
}

    // применим функции и уменьшим все картинки в папке "prikol"
open_dir_and_small ( $papka );
?>

После применения этого скрипта в папке prikol появятся новые уменьшенные картинки с теми же названиями, что и старые. В середине имён файлов будет стоять слово _new. Это и есть новые картинки, размер их Вы сами можете менять и сами можете менять их качество. Имена новых картинок будут выведены в окно броузера, это означает, что программа работает.
Теги:
размер картинок
Добавлено: 29 Апреля 2018 12:42:05 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...