Старый 20.04.2008, 02:10   #1 (permalink)
Новичок
 
Аватар для Venik
 
Специализация: Новичок
Регистрация: 20.04.2008
Адрес: Россия, Москва, СЗАО
Сообщений: 5
Репутация: 0
Номер ICQ 432143
Отправить сообщение для Venik с помощью Skype™
Вопрос Массовое уменьшение картинок

Доброй ночи.
Возникла необходимость в скрипте, который бы смог уменьшить большое количество картинок.
Перепробовал довольно большое количество похожих скриптов на PHP, но работали они не совсем корректно.
Посему, решил обратиться на данный форум.
Суть скрипта:
-запускается скрипт, который открывает указанную в конфиге папку и начинает по очереди уменьшать картинки до заданного, опять же в конфиге, размера. Уменьшенные картинки сохраняет в другой папке (или той же, но с префиксом _NEW в имени файла).
Было бы совсем шикарно, если после этого скрипт генерировал страницу, на которой вывелись все эти уменьшенные картинки.
Так сказать, по-максимуму автоматизировать процесс уменьшения\отображения картинок.
Просто на FTP лежат фотки по 4 мегабайта каждая, причём в большом количестве. Вот и хотелось бы скриптом уменьшить их, сложить в отдельную папку (или сохранить в той же папке, но под отдельным именем) и сгенерировать страницу, по открытию которой все эти уменьшенные фотографии в ряд выводились бы.
Заранее премного благодарен за помощь и советы.
__________________
"Господи, перезагрузи этот мир..." - молитва программиста.
Venik вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 20.04.2008, 03:08   #2 (permalink)
Администратор
 
Аватар для Manfred
 
Специализация: Дизайнер
Регистрация: 07.12.2007
Адрес: МСК
Сообщений: 1,497
Репутация: 1252
Номер ICQ 232466
По умолчанию Ответ: Массовое уменьшение картинок

зачем скрипт на ПХП? через ФШ делай
__________________
↑ ↑ ↑ WARNING! линчеватель дизайна ↑ ↑ ↑





Война войной, а обед - по расписанию. (с) Фридрих Вильгельм I

Кубик Рубика - трёхмерный визуализатор процесса дефрагметации (с)

>>> Manfred Blog <<<

Бьерн Страуструп, один из разработчиков языка С++:
"Я всегда мечтал о том, чтобы работа с компьютером была не сложнее
пользования телефоном. Моя мечта стала реальностью.
Теперь я уже не знаю, как пользоваться всеми возможностями телефона".
Manfred вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Этот пользователь отблагодарил Manfred за это сообщение:
Venik (22.04.2008)
Старый 20.04.2008, 03:35   #3 (permalink)
Администратор
 
Аватар для Devil
 
Специализация: Кодер
Регистрация: 05.12.2007
Адрес: Москва
Сообщений: 3,016
Репутация: 1327
Номер ICQ 599613
По умолчанию Ответ: Массовое уменьшение картинок

Venik, эм...если я верно понял. то тебе просто напросто требуется скрипт фото галлереи с возможностью делать автоматические миниатюры заданные тобой же? Если у тебя стоит какая либо CMS то назови её, а мы попробуем тебе подобрать фотогаллере. А что бы не парится, то поставь что-то тпиа Copirmine (мог ошибиться с названием)
__________________
Мы те, кто мы есть
Мой личный блог
Devil вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Этот пользователь отблагодарил Devil за это сообщение:
Venik (22.04.2008)
Старый 20.04.2008, 15:21   #4 (permalink)
Новичок
 
Аватар для Venik
 
Специализация: Новичок
Регистрация: 20.04.2008
Адрес: Россия, Москва, СЗАО
Сообщений: 5
Репутация: 0
Номер ICQ 432143
Отправить сообщение для Venik с помощью Skype™
По умолчанию Ответ: Массовое уменьшение картинок

Не-не, в том-то и дело, что у меня CMS не стоит и прибегать к её помощи я не хочу.
Такого типа скрипты, на сколько я понял, реализуются встроенным в PHP GDLib.
Вот пример скрипта:
PHP код:
<?php

$papka 
"photo";
set_time_limit(0);
$qulity 100;
$size_max 640;

$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); }
if (!
$im){ return false; }
return 
$im;
}

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$old0000$w_new$h_new$w$h);
imageJpeg($new$path_new$qulity); 
imageDestroy($new); 
print 
$path_new."<br>\n";
}
imageDestroy($old); 
clearstatcache();
}

closedir($dh);
}

open_dir_and_small $papka );
?>
Вот примерно такой скрипт для массового уменьшения картинок мне и нужен (без задействования CMS и прочего).
Это, кстати говоря, единственный найденный мною скрипт, который уместился в 1 файле, действительно работает и работает быстро. Я бы на нём и остановился, если бы не одно "но".
И вот в чём это "но" заключается...
...вот оригинальное фото (чтобы лучше было видно - сохраните на компьютере)...
...а вот уменьшенное скриптом фото.
Почему он так делает? Как будто пески времени, блин. Или на пастеризацию ещё похоже. Соглашусь, выглядит эффектно, но мне это абсолютно не нужно.
И, как мне кажется, ошибка кроется в самом скрипте, а не в чём либо другом. Ведь я пробовал ещё один скрипт - он хоть уменьшает и по одной картинке, но таким же способом - такого эффекта нет, всё выглядит отлично.
Подскажите, пожалуйста, в чём дело.
Здесь лежит сей скрипт с комментариями разработчика.
__________________
"Господи, перезагрузи этот мир..." - молитва программиста.
Venik вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 21.04.2008, 18:18   #5 (permalink)
Новичок
 
Аватар для Venik
 
Специализация: Новичок
Регистрация: 20.04.2008
Адрес: Россия, Москва, СЗАО
Сообщений: 5
Репутация: 0
Номер ICQ 432143
Отправить сообщение для Venik с помощью Skype™
По умолчанию Ответ: Массовое уменьшение картинок

Up.
^_^
__________________
"Господи, перезагрузи этот мир..." - молитва программиста.
Venik вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 22.04.2008, 00:14   #6 (permalink)
Администратор
 
Аватар для Devil
 
Специализация: Кодер
Регистрация: 05.12.2007
Адрес: Москва
Сообщений: 3,016
Репутация: 1327
Номер ICQ 599613
По умолчанию Ответ: Массовое уменьшение картинок

Venik, попробуй вот этот приём
PHP код:
<?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); }
if (!
$im){ return false; }
return 
$im;
}

    
// основная функция, которая уменьшит все фото в папке $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$old0000$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 );
?>
Значений качества не ставь на 100 - это глупо, так как визуально они не отличаются от 75 совершенно. но зато вес в 2 раза более
__________________
Мы те, кто мы есть
Мой личный блог
Devil вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
3 пользователя(ей) отблагодарили Devil за это сообщение:
AleX (22.04.2008), Kurbatov (22.04.2008), Venik (22.04.2008)
Старый 22.04.2008, 03:03   #7 (permalink)
Новичок
 
Аватар для Venik
 
Специализация: Новичок
Регистрация: 20.04.2008
Адрес: Россия, Москва, СЗАО
Сообщений: 5
Репутация: 0
Номер ICQ 432143
Отправить сообщение для Venik с помощью Skype™
По умолчанию Ответ: Массовое уменьшение картинок

Devil, не вышло.
Сам посмотри:
-оригинал;
-полученное доработанным тобою скриптом.
Из-за чего так получается?
Надеюсь, этот скрипт удастся заставить работать корректно.
Help. ^_^
__________________
"Господи, перезагрузи этот мир..." - молитва программиста.
Venik вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блок из картинок lucifer CSS и HTML верстка 46 26.05.2008 07:26
www.alfapic.com | Бесплатный хостинг картинок и варезный форум :) faiber Ваши Проекты 25 09.05.2008 15:30



Часовой пояс GMT +3, время: 21:55.
vBulletin® версия 7.6.1.
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Web Mastering By Devil Art