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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение PNG-изображения, Не получается изменить размер 
V
    Опции темы
zodiac
  Дата 17.12.2011, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте! У меня есть скрипт, который меняет размер PNG изображения. Однако по какой-то причине, что бы я ни делал, получить уменьшенную копию картинки не удается - результатом всегда является сообщение "Изображение %filename% не может быть показано, так как содержит ошибки". Включение error_reporting(E_ALL) и отключение заголовка с типом, чтобы посмотреть список ошибок, ни к чему не привело, из чего я сделал вывод, что в коде ошибок не имеется (что неудивительно).
Остается сервер, однако в phpinfo явно написано, что поддержка PNG включена. И в чем причина сбоев, я могу только гадать. Подскажите, пожалуйста, где может скрываться проблема?

P.S. Доступа к php.ini не имеется. Хостинг только куплен, так что, может быть, этого файла там просто нет (может, его надо создавать вручную?)

Собственно, код (на всякий случай).
Код

$pic=$_GET['pic'];
$q=100;$w=$_GET[w];$h=$_GET[h];

$image = getimagesize($pic);

header("Content-type: image/png");
$imgsource = @imagecreatefrompng($pic);

$src_w = imagesx($imgsource);
$src_h = imagesy($imgsource);
$dx = $src_w / $w;
$dy = $src_h / $h;

$d = max($dx, $dy);

$new_w = $src_w / $d;
$new_h = $src_h / $d;

$imgdest = imagecreatetruecolor($new_w, $new_h);
imageAlphaBlending($imgdest, false);
imageSaveAlpha($imgdest, true);
imagecopyresampled($imgdest, $imgsource, 0, 0, 0, 0, $new_w, $new_h, $src_w, $src_h);

imagepng($imgdest, '');

imagedestroy($imgdest);
imagedestroy($imgsource);


Это сообщение отредактировал(а) zodiac - 17.12.2011, 13:40
PM MAIL   Вверх
WolfAlone
Дата 17.12.2011, 16:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


В экстазе
***


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

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



Попробуйте изменить размер изображения другого формата. Если всё получиться, значит нет поддержки PNG. Если нет - значит, ошибки в коде.

Ещё можно попробовать сохранить изображение перед тем как отдавать его в браузер.

Так же, стоит внимательно посмотреть, не залетел ли где-то какой-нибудь зловредный символ, перед тем как изображение было отправлено в браузер.


--------------------
И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!"

Ф топку Ubuntu, Debian наше фсё!

(с) Евгений Вольф
PM MAIL WWW ICQ Skype   Вверх
$дмитрий
Дата 17.12.2011, 16:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

Включение error_reporting(E_ALL) и отключение заголовка с типом, чтобы посмотреть список ошибок, ни к чему не привело

Не забываем про директиву display_errors

Цитата

Подскажите, пожалуйста, где может скрываться проблема?

1. Путь к картинке $_GET['pic'] лучше задавать абсолютный
2. Зачем задавать второй параметр? imagepng($imgdest, '');
3. Исходный файл png может быть битым

 
PM MAIL   Вверх
zodiac
  Дата 18.12.2011, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(WolfAlone @  17.12.2011,  16:09 Найти цитируемый пост)
изменить размер изображения другого формата

С другими форматами работает отлично, т.к. адаптировал из аналогичной функции для jpeg'a...

Цитата($дмитрий @  17.12.2011,  16:42 Найти цитируемый пост)
Не забываем про директиву display_errors

Спасибо, вспомнил  smile Плюсом к ней и display_startup_errors...

Цитата($дмитрий @  17.12.2011,  16:42 Найти цитируемый пост)
Зачем задавать второй параметр?

Как я уже говорил выше, я адаптировал для png-файлов функцию, уменьшающую jpeg-изображения. Опускать имя файла я не стал, просто указал пустое, на всякий случай, однако в этом и была ошибка.
Включение забытой ранее display_errors привело к появлению сообщения о "неправильном имени файла". Параметр был убран, и все заработало.
Что интересно, во всех исходниках, которые я находил на форумах, этот параметр был...

Всем большое спасибо за помощь!

Это сообщение отредактировал(а) zodiac - 18.12.2011, 00:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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