Imagemagick не показывает текст, но также не выдает ошибок - PullRequest
3 голосов
/ 16 августа 2011

Я использую ImageMagick для создания значков продуктов для продуктов в нашей системе. Значки продуктов похожи на ТАК чутье , всего лишь несколько составных изображений и немного текста. В этом сценарии нет ничего плохого, так как он отлично работает на моей машине для разработки под управлением Windows. Однако в моей производственной системе (CentOS 5.1) он отображает все, кроме текста.

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

И это не сработало, когда я установил шрифты Windows для Linux как , описанное здесь .

Я набрал convert -list font, и он показывает список шрифтов, о которых Имаджик знает (примерный список показан ниже)

  Font: Times-BoldItalic
    family: Times
    style: Italic
    stretch: Normal
    weight: 700
    glyphs: /usr/share/fonts/default/Type1/n021024l.pfb
  Font: Times-Italic
    family: Times
    style: Italic
    stretch: Normal
    weight: 400
    glyphs: /usr/share/fonts/default/Type1/n021023l.pfb
  Font: Times-Roman
    family: Times
    style: Normal
    stretch: Normal
    weight: 400
    glyphs: /usr/share/fonts/default/Type1/n021003l.pfb

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

В основном изображение отображается, но его текстовые части не отображаются вообще, и никаких ошибок не возникает (см. Изображения ниже).

В коде нет ничего плохого, и Windows, и CentOS используют закрытые версии Imagick (6.7.1-4 и 6.7.1-3). Единственной проблемой может быть шрифт, я просто устанавливаю и проверяю нормальные шрифты TTF, нужен ли какой-то особый шрифт, чтобы он работал?

Рабочая

Working Image

Broke

Broken Image

EDIT - игнорировать различия в QR-коде и рейтингах. Это связано с тем, что работающий значок и нерабочий значок находятся на двух разных серверах.

ОБНОВЛЕНИЕ 1 - Я запустил простой тестовый скрипт, и даже он не работает. Это то, что я запустил в качестве теста: http://us2.php.net/manual/en/function.imagick-annotateimage.php Шрифт просто не отображается, и никаких ошибок не выдается.

Я также скопировал шрифт из системы CentOS и попробовал его на коробке с Windows, и он отлично работает. Шрифты просто не работают на CentOS.

Я также попробовал это без установки шрифта, я предполагаю, что Imagick подберет шрифт по умолчанию или что-то еще, и снова работает в Windows, но не в CentOS. Я собираюсь попробовать это на другой версии * nix, чтобы посмотреть, что произойдет. Буду обновлять с выводами.

Обновление 3 : Я сузил проблему до проблемы с библиотекой FreeType, я думаю. Форумы утверждают, что для правильного отображения текста необходимо установить FreeType. И когда я смотрю на config.log, он говорит мне, что есть проблема установки FreeType. Буду признателен за любые советы, в то время как я собираюсь переустановить Freetype и снова запустить установку.

1 Ответ

1 голос
/ 18 августа 2011

Вы не можете просто установить Freetype. На самом деле вам нужно установить Freetype на ваш сервер, а затем перекомпилировать ImageMagick, используя параметр --with-freetype-dir = / usr / local. Где / usr / local - это путь к вашей установке Freetype.

Я считаю, что это нормально / usr / local / bin

Дай этому вихрь и дай нам знать, что происходит;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...