PHP GD создает миниатюры с одним черным пикселем в верхнем левом углу - PullRequest
0 голосов
/ 11 июля 2010

Предупреждение. У меня мало опыта работы с CodeIgniter, и я обновляю сайт, изначально созданный другим разработчиком.

По какой-то причине класс изображений CodeIgniter создает эскизы с черным пикселем в верхнем левом углу. Вот пример:

альтернативный текст http://jnjnjn.com/images/codeigniter_bad_thumb.jpg

Похоже, это происходит только в рабочей среде (этот сайт размещен на супер-слабом общем хосте). Миниатюры прекрасно создаются на моей машине с OS X и на моей машине с Ubuntu в Slicehost.

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

Опции выглядят так:

$this->Image_Resize['image_library'] = 'gd2';
$this->Image_Resize['thumb_marker'] = 'thumb_';
$this->Image_Resize['create_thumb'] = TRUE;
$this->Image_Resize['maintain_ratio'] = TRUE;
$this->Image_Resize['width'] = 200;
$this->Image_Resize['height'] = 200;

А затем изображение обрабатывается так:

$this->Image_Resize['source_image'] = 'images/news/'.$image['file_name'];
$this->image_lib->initialize($this->Image_Resize);
$this->image_lib->resize();

Кто-нибудь сталкивался с этой проблемой раньше? Поиски в Google & SO меня никуда не ведут. Эти пиксели сводят меня с ума.

Обновление : как я боялся, это никак не связано с CodeIgniter. Что-то не так с библиотекой GD хоста, и они больше ничего не поддерживают. Просто странно, что я не могу найти кого-то еще в мире, кто имел эту проблему.

В любом случае, мой совет никогда не использовать Doteasy. Это кошмар.

Ответы [ 4 ]

1 голос
/ 29 марта 2011

У меня было то же самое, похоже, что это происходит только с форматом PNG32 - попробуйте экспортировать ваше изображение в PNG24 или PNG8 и посмотрите, поможет ли это, сработало для меня.

1 голос
/ 06 декабря 2010

Я сталкиваюсь с той же проблемой, и после некоторого копания вот что я придумал для моей ситуации.Я подумал, что поделюсь этим со всеми, если есть что-то полезное.Имейте в виду, что это прямой PHP, а не воспламенитель кода, но это один из первых ответов, когда вы выполняете поиск в Google.

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

1 голос
/ 11 июля 2010

Если это вызывает хост, возможно, это проблема с их библиотекой изображений. Класс Codeigniter Image Manipulation на самом деле просто абстрагируется выше этого уровня, так что вы можете выбрать, какую библиотеку изображений использовать. Узнайте, какие из них доступны на вашем хосте, и, возможно, попробуйте другой и посмотрите, совпадают ли результаты. Возможные варианты для ['image_library']:

  1. GD
  2. GD2
  3. ImageMagick
  4. NetPBM

Класс управления изображениями - документация Codeigniter

0 голосов
/ 17 июля 2010
.$image['file_name'];
^---- see period
...