Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Скрипт загрузки изображений и создания эскиза

Ответить
Настройки темы
[решено] Скрипт загрузки изображений и создания эскиза


Administrator


Сообщения: 25151
Благодарности: 3803


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: zip maxImageUpload.class.zip
(2.4 Kb, 11 просмотров)
Всем привет!
Есть чужой простейший скрипт, который позволяет загружать картинку на сервер, делает из нее еще две - определенного размера + эскиз. Он устраивает своей простотой, легкостью и, главное - он не требует взаимодействия с БД.

Есть один существенный для меня недостаток: работает только с jpeg, при этом при загрузке некоторых изображений сообщает, что загруженный файл
Цитата:
is not a valid JPEG file in /<путь к скрипту>/maxImageUpload.class.php on line 205
В принципе обработка jpeg не так важна, но есть необходимость в доработке для работы с png.

Проблема в недостатке знаний для рихтовки кода, поможете?

В аттаче php, который и производит обработку изображений.

Спасибо!

Отправлено: 19:02, 11-04-2013

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Blast, я в php прихрамываю на все четыре, но разбор файла дает следующий расклад:
117,118 строки нам определяют, с чем мы работаем. С jpeg, прекрасно.
PHP код: Выделить весь код

//Check image type. Only jpeg images are allowed
            
if ( (($_FILES['myfile']['type'])=='image/pjpeg') || (($_FILES['myfile']['type'])=='image/jpeg')) { 

Для png надо будет дописать условие. Поставим отметку, пойдем дальше.
CheckDirs, SetMemoryLimit пропускаем.
Доходим до ResizeImage. Собственно та функция, что вызывает внешний обработчик. (далее будет понятнее)
PHP код: Выделить весь код

function resizeImage($src,$dest,$new_width,$new_height,$quality){
       
$this->fastimagecopyresampled($newImage$oldImage0000$new_width$new_height$width$height$quality);
       
imagejpeg($newImage$dest100);
    } 

fastimagecopyresampled - вызывает внешние программы: imagecopyresized, imagecreatetruecolor, imagecopyresampled и т.д. аргументы нам пока не интересны.
PHP код: Выделить весь код

// Function to resize images
    // Author: Tim Eckel - Date: 12/17/04 - Project: FreeRingers.net - Freely distributable.
    
function fastimagecopyresampled (&$dst_image$src_image$dst_x$dst_y$src_x$src_y$dst_w$dst_h$src_w$src_h$quality 3) {
       if (empty(
$src_image) || empty($dst_image)) { return false; }
       if (
$quality <= 1) {
         
$temp imagecreatetruecolor ($dst_w 1$dst_h 1);
         
imagecopyresized ($temp$src_image$dst_x$dst_y$src_x$src_y$dst_w 1$dst_h 1$src_w$src_h);
         
imagecopyresized ($dst_image$temp0000$dst_w$dst_h$dst_w$dst_h);
         
imagedestroy ($temp);
       }
       return 
true;
   } 

Собственно и все. Надо искать библиотеки/файлы/т.п. которые и занимаются ресайзом картинок.
Этот скипт - просто удобная оболочка, скорей всего вызываемая из вне, она выполняет ряд проверок: на превышение памяти, доступность директорий чтения/записи, и т.д. Т.е. проводит защиту "от дурака" и подготавливает аргументы.
Надо будет скопипастить блок if jpeg, поправить блок if ($result) {}, где прописать вызов "дублера" ResizeImage_png, из которого вызвать внешний скрипт.
Тут, прости, отправлю в гугл: "php resize image png"
Если завтра позволит время (сомнительно), поищу нужный скрипт.

Та-та-та...
Поправочка. Гугл подсказывает, что надо читать документацию: imagecopyresized, imagecopyresampled.
Там по тексту есть примеры работы с png, jpeg в зависимости от типа файла.
Комментарий
// Function to resize images
// Author: Tim Eckel - Date: 12/17/04 - Project: FreeRingers.net - Freely distributable.
сбил с толку.
Blast, тогда, если завтра позволит время, что опять таки сомнительно, попробую написать исправленный скрипт для работы с png.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:22, 11-04-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Administrator


Сообщения: 25151
Благодарности: 3803

Профиль | Сайт | Отправить PM | Цитировать


Цитата lxa85:
Надо искать библиотеки/файлы/т.п. которые и занимаются ресайзом картинок. »
Я еще более далек от php, но имеющийся скрипт вероятно использует функции апача или того же пхп так как не вызывает извне ничего и сам по себе состоит из одного файла, который и есть в аттаче.

В любом случае спасибо за направление, завтра попробую разобраться самостоятельно, но и от помощи не откажусь конечно

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция


Отправлено: 23:46, 11-04-2013 | #3


Аватара для Habetdin


Автор проектов


Сообщения: 3649
Благодарности: 1498

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: zip maxImageUpload.class_0040.zip
(2.6 Kb, 12 просмотров)

Blast, попробуйте

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Последний раз редактировалось Habetdin, 12-04-2013 в 00:40. Причина: Версия от 00:40

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:33, 12-04-2013 | #4



Administrator


Сообщения: 25151
Благодарности: 3803

Профиль | Сайт | Отправить PM | Цитировать


Habetdin, спасибо, но сказал
Цитата:
Undefined variable: type in <путь>/maxImageUpload.class.php on line 214
Unexpected error
и прекратил работу.

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция


Отправлено: 00:42, 12-04-2013 | #5


Аватара для Habetdin


Автор проектов


Сообщения: 3649
Благодарности: 1498

Профиль | Сайт | Отправить PM | Цитировать


Blast, да, перепутал переменную, в аттаче от 00:40 поправил. Сильно не бить
Правда "фича" которую заметил - в папках normal и thumbnail оригинальные имена файлов с префиксом, а значит расширение старое - получается JPG с расширением PNG

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:44, 12-04-2013 | #6



Administrator


Сообщения: 25151
Благодарности: 3803

Профиль | Сайт | Отправить PM | Цитировать


Цитата Habetdin:
имена лишь с префиксом, а расширение старое - получается JPG с разширением PNG »
в принципе все равно, главное чтобы эскиз был рабочим, то есть видимым

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция


Отправлено: 00:46, 12-04-2013 | #7


Аватара для Habetdin


Автор проектов


Сообщения: 3649
Благодарности: 1498

Профиль | Сайт | Отправить PM | Цитировать


Цитата Blast:
то есть видимым »
Почти всем современным браузерам, вроде бы главное что "внутри" - у меня показывает превьюшки. А Imagine мне так вообще предложил исправить расширение файла на jpg

Цитата Blast:
разширением »
Вот что получается, если начал писать разрешение, а дописал расширение Пойду-ка я спать уже...

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Последний раз редактировалось Habetdin, 12-04-2013 в 00:53. Причина: offtop


Отправлено: 00:50, 12-04-2013 | #8



Administrator


Сообщения: 25151
Благодарности: 3803

Профиль | Сайт | Отправить PM | Цитировать


Habetdin, большое спасибо!

Все работает так как хотелось.

lxa85, спасибо за участие!

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:51, 12-04-2013 | #9



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Скрипт загрузки изображений и создания эскиза

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Скрипт создания ссылки, для GPO bombording Скриптовые языки администрирования Windows 6 27-09-2012 13:37
MySQL - скрипт создания базы данных Vladas Программирование и базы данных 1 21-04-2012 20:41
VBS/WSH/JS - Скрипт для создания интернет-соединения BigBoo Скриптовые языки администрирования Windows 5 09-02-2012 23:45
Любой язык - Батник (скрипт) для создания odbc ITSpec Скриптовые языки администрирования Windows 2 09-12-2009 10:32
Скрипт для создания пользователей Ven Microsoft Windows NT/2000/2003 6 24-02-2008 23:57




 
Переход