![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Делаю скрипт для создания автоматизированного заноса новостей на сайт. Т.е. есть форма с полями + выбирается файл и все это подается на это скрипт (частичный код ниже). Картинки всегда JPG большого размера - нужно сделать чтобы картинки преобразовывались например в 300х300 с качеством 80 и в таком виде уже сохранялись на сервере.
Что нужно чтобы узнать размер картинки которая закачивается и как сделать чтобы она стала 300х300. (размер буду делать пропорциональным, но это уже не сложно, главное узнать начальный размер и как сделать еее нужного размера) |
|||
|
||||
| GoodBoy |
|
||||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
Image::Magick тебя спасёт! :-)))
Если картинка пропорциональна размеру 300х300, то вот так:
в общем случае:
|
||||
|
|||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 12 Всего: 84 |
поиск на форуме Image::Magick
и GD так же можешь глянуть модули тут: http://search.cpan.org/~jcristy/PerlMagick-6.29/Magick.pm и http://search.cpan.org/~lds/GD-2.35/GD.pm в комплекте есть неплохие примеры ;) ... да и на форуме поиск замечательный... много способов выдаст... Добавлено @ 17:22 снова меня опередили MaxPayne, GoodBoy дал хороший пример , ну а поиском можешь найти пример с GD ;) |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
При таком коде не выдает размеры картинки:
Выводит: File Image::Magick=ARRAY(0x812c254): x Поидее выводит что-то - значит модель установлен. |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 1 Всего: 50 |
Попробуй для начала
|
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
MaxPayne, почитай доки к модулю... У тебя может быть более новая версия, чем та, что юзал я...
|
|||
|
||||
| MaxPayne |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Код выводит: Exception 410: Must specify image size `\Documents and Settings\User\Рабочий стол\Новости\99.jpg' Куда то пропало С: Или сначала закачать, а потом его переделать? Пробовал подругому - брать уже выделенный файл
Тогда выводит Exception 435: unable to open image `99.jpg': No such file or directory Это сообщение отредактировал(а) MaxPayne - 20.10.2006, 08:33 |
||||||
|
|||||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
MaxPayne, как вариант: попробуй читать файл из папки C:\image. Т.е. чтобы в пути не было пробелов и не было русских букв.
|
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 12 Всего: 84 |
можно же прямо в каталог со скриптом
в Винде путь - .\99.jpg В *nix путь - ./99.jpg А по-моему он закачивает на сервер файлик неверно ;) MaxPayne, я угадал? |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Так в том то и фикус - новости добавляются на ура (astronews.ru), закачивается файл и добавляется в базу новость. Но проблема в том, что картинку приходится перед заливкой менть например с 1024х768, на 300х??? (пропорционально). Т.к. все идеально добавлялось решил еще больше упростить свою задачу, предварительно не уменьшать картинки, а заставить сделать это скрипт. МОжет так нельзя вообще?
Может сначала нужно залить, потом открыть, подредактировать и перезаписать? МОжет на лету нельзя? |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 12 Всего: 84 |
MaxPayne, это как налету?
залить - изменить - получаем всё ок |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Получилось его открыть и узнать размеры, дальше нахожу коэффициент сжатия (по барабану какая сторона больше)
$path$max = /home/www/htdocs/00000128.jpg
Но файл не изменился в размерах. |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
по-идее ты не можешь перезаписать открытый файл...
|
|||
|
||||
| Zuzu |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 1 Всего: 4 |
На лету, это значит не сохряняя промежуточный результат во временный файл. Судя по документации, должно работать (код, который написАл здесь даже не компилировал, заранее прошу прощения за возможные ошибки):
Ссылки на документацию: (http://www.imagemagick.org/script/perl-magick.php)
perldoc CGI
В чем же дело? Понятно, что проблема решена путем промежуточного сохранения в файл и чтения в дальнейшем из него. Вопрос академический, поэтому отдельную тему решил не создавать. Добавлено @ 16:00
Скорее всего, можно переписать существующий файл! Он ужЕ загружен в память! Может дело в "волшебных пузырьках"? Замени на двойные кавычки =)
=) Это сообщение отредактировал(а) Zuzu - 23.10.2006, 16:01 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
||||||||||
|
|||||||||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
Тьфу ты... Ну естественно!!!!! В одинарных у тебя переменные твои не интерполитовались!!!! |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |