PHP image_jpeg не работает, если файл UTF-8, работает, если это ANSI - PullRequest
1 голос
/ 03 июля 2010

Я использую этот класс для обрезки, изменения размера моего изображения: http://www.phpclasses.org/package/4268-PHP-Resize-crop-rotate-flip-flop-and-grey-images.html

Используется GD.Проблема в том, что я, например, делаю это:

$img = new ImageTransform;
$img->view('resize', 'foo.jpg', '500x400', true); // true argument is $cache = true

Теперь я могу просто указать

<img src="that_script.php" alt="" />
, и это покажет, что изображение изменено.Но это не так, если все мои файлы в формате UTF-8!Только если они ВСЕ в кодировке ANSI.Изображение просто не будет отображаться, если некоторые или все файлы имеют кодировку UTF-8.Если я удаляю заголовки ... и просто позволяю ему печатать все вещи ... Я вижу все забавные символы ... так что это что-то печатает!Но оно просто не будет печатать фактическое изображение с заголовками ...

В документации PHP я нашел кого-то, напишите это: http://no.php.net/manual/en/function.imagejpeg.php#96796

ПРЕДУПРЕЖДЕНИЕ для тех, кто использует utf-8 сценариев: прежде чем сойти с ума, как я, на целый день и копаться в файлах конфигурации и т. Д.

ПРЯМОЙ ВЫХОД БРАУЗЕРА с использованием image_jpeg работал только после того, как я сохранил свой сценарий в ANSI вместо utf-8

Так должно быть что-то не так с PHP?Я использую версию PHP: 5.3.2

Никто в PHPClasses не жалуется на что-то не так, поэтому я не думаю, что это класс.Но что-то с PHP.Вопрос в том, как я могу заставить его работать с UTF-8?

Спасибо за помощь!

1 Ответ

2 голосов
/ 03 июля 2010

Возможно, вы сохраняете файлы как UTF8 BOM ? Это, вероятно, испортит вывод изображения, поскольку символ спецификации всегда выводится первым. Попробуйте сохранить его как UTF8 No-BOM, который должен быть идентичен файлам ANSI.

...