2012-04-16 5 views
1

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

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

После прочтения примеров IM6 с сайта IM:

Я нашел антиальясинг вызывает затруднения в процессе. Например, он прекрасно работает с помощью следующей команды:

C:\ImageMagick-6.6.6-6\convert -background lightblue -fill blue -pointsize 48 -font "SimSun-&-NSimSun" label:@chinese_words.utf8 label_utf8_simsun.gif

Generated image Новичок не разрешается размещать изображения.

Он отлично смотрится, потому что он имеет сглаживание с высоким разрешением. ЖК-дисплей имеет только Ч/Б, без анита-алиаса, и он должен быть низкого разрешения, такого как 12x12 пикселей. Я попробовал следующий скрипт.

C:\ImageMagick-6.5.6-Q16\convert -pointsize 16 -font "SimSun-&-NSimSun" +antialias -strokewidth 0.4 -threshold 50%% label:@chinese_words.utf8 label_utf8_simsun_16_bw_strokewid1.gif

Результат выглядит ужасно, и растровый пиксель отсутствует.

Generate Image Newbie не имеет права для публикации изображения.

Кто-нибудь знает, как извлечь шрифт TrueType с помощью Python/ImageMagick, подходящего для ЖК-дисплея (без сглаживания, двухцветного, небольшого размера/низкого разрешения)?

Спасибо за вашу помощь заранее!

ответ

1

SimSun, кажется, well hinted, поэтому он четкий и читаемый с небольшими размерами пикселей. Снимок экрана ниже взорван от персонажа (я не знаю, что это такое, поэтому, если это что-то ... грубо, это было не мое намерение :)) Я вставил WordPad с размером шрифта 10 pt в Windows 7.

Screenshot of SimSun

Итак: вы можете захотеть взглянуть на альтернативные варианты, которые делают глифы с помощью библиотеки, которая поддерживает шрифт намекая правильно. FreeType делает это (при компиляции, чтобы иметь поддержку подсказок - алгоритм все еще запатентован, если я правильно помню), и если ваша серверная платформа также будет Windows, будет довольно легко написать приложение C#/GDIPlus который предоставляет вам текст.

EDIT: Из любопытства и скуки я на самом деле реализованы дешевые Python ctypes привязок FreeType2 и добавил одинаково дешевый код визуализации следующий учебник FreeType2. Кажется, что вы делаете достойную работу даже при небольших размерах - и подсказка и т. Д. Является настраиваемой, я просто собираюсь по умолчанию в своем коде.

enter image description here

код доступен на https://bitbucket.org/akx/python-minift/src - Я не делаю никаких гарантий относительно его работы, как и должно быть, но это достойный отправной точкой.

+0

Спасибо. Шрифт подсказывает многое. Я не уверен в ОС производственного сервера, поэтому предпочтительным является портативное решение. Например, Python/PHP/GCC или аналогичный. Кстати, я плохо разбираюсь в программировании Windows. Как альтернативный способ, я нахожу родной китайский растровый шрифт обратно в DOS.С ним легко справиться с Python/C под Windows/Linux. Однако unicode должен быть первым выбором, так как мой проект не зависит от языка, должны поддерживаться другие языки, включая PanEuro/Korean/Japanese/Arabic/Farsi и т. Д. Я буду продолжать искать его. –

+0

@KaiLiu - см. Мой исправленный ответ! :) – AKX

+0

Прохладный. Большое спасибо, это может быть хорошая база кода. Позвольте мне попробовать. –