Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема при сохранении обработанного изображения 
:(
    Опции темы
PbIkc
Дата 2.6.2009, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.6.2009

Репутация: нет
Всего: нет



Приветствую всех.
Есть скрипт, который ресайзит картинку (аватар) с помощью imagemagick. 
Код

...
shell_exec($q);
header ("Content-Disposition: inline; filename=\"" . $nn2 . "\"");
header ("Content-type: image/".$type);
#header ("Content-Length: " . filesize($nn));
if ($type=="gif") {
    $im = @imagecreatefromgif($nn);
    imagegif ($im);
}
if ($type=="jpeg") {
    $im = @imagecreatefromjpeg($nn);
    imagejpeg ($im);
}
if ($type=="png"){
    $im = @imagecreatefrompng($nn);
    ImagePng ($im);
}
imagedestroy($im);

Проще вроде некуда. Сама обработка проходит корректно, картинка отображается. Но сохраняется нормально только в опере.
Файрфокс не видит размер и не сохраняет вообще. ИЕ не видит размер и тип, но сохраняет в bmp.
Раскомментирование строчки с Content-Length не помогает, наоборот, после отдачи изображения браузер (любой) еще какое-то время пытается что-то грузить. Размер файла передается корректный.
Еще одна проблема, при ресайзе анимированного аватара в браузер отдается только первый фрейм. Сам аватар создается корректно.
o.O
Что делать?
Проблема явно в хидерах. Есть вариант с форсированной загрузкой
Код

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".$nn2.";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($nn));

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

Но даже при таком выводе сохраняется только один фрейм в анимации.
upd
Проблема анимации решена с помощью
Код

echo file_get_contents($nn);

Хы. Но с первой проблемой что делать?

Это сообщение отредактировал(а) PbIkc - 2.6.2009, 01:12
PM MAIL   Вверх
gta4kv
Дата 2.6.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 8
Всего: 91



Код

$img = imagecreatefrompng( $path );
header( 'Content-type: image/png' );
imagepng( $img );


Абсолютно рабочий код.
PM MAIL   Вверх
PbIkc
Дата 2.6.2009, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.6.2009

Репутация: нет
Всего: нет



Для вывода на экран он абсолютно рабочий. А вот для сохранения получается не очень.
PM MAIL   Вверх
gta4kv
Дата 2.6.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 8
Всего: 91



Вам сохранить надо на сервер, или юзеру отдать на скачивание?
PM MAIL   Вверх
PbIkc
Дата 2.6.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.6.2009

Репутация: нет
Всего: нет



Мне нужно просто отдать в браузер, если юзеру понравится результат, он сохранит как обычно.
Странная проблема, я пробовал все хидеры отдавать:
Код

header ("HTTP/1.x 200 OK");
header ("Date: ".gmdate("D, d M Y H:i:s")." GMT");
header ("Server: Apache/1.3.33 (Unix) PHP/4.4.0");
header ("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header ("Accept-Ranges: bytes");
header ("Content-Length: " . filesize($nn));
header ("Keep-Alive: timeout=15, max=100");
header ("Connection: Keep-Alive");
header ("Content-Disposition: inline; filename=\"" . $nn2 . "\"");
header ("Content-type: image/".$type);

Эффект тот же.
Вот пример динамичной картинки у которой все правильно определяется. (не мое)
http://www.nwhite.net/MooCrop/
Значит это возможно. Хотя даже у нее ИЕ не правильно определяет тип, переименовывать приходится. Есть похоже какие-то разночтения с хидерами, типа как в css...
Для меня это не смертельно, я и форсированно могу юзеру картинку отдать, но хотелось бы все же узнать в чем прикол.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.