Forum Webscript.Ru
Программирование => Perl => Тема начата: glebushka от 02 Июня 2005, 04:27:39
-
Вот код:
use Image::Magick;
print "Content-Type: image/png\\n\\n";
my $im = Image::Magick->new(size => \'540x525\');
$im->Read(\'xc:white\');
$im->Set(magick=>\'png\');
$im->Set(stroke => \'red\');
my $text = \'Посмотрим что тут да как\';
$im->Annotate(pointsize=>50, fill=>\'green\', text=>$text, x=>10, y=>200);
print $im->ImageToBlob();
exit;
Выводит закорючки.
Скачал коллекцию киррилических шрифтов.
gs-type1_koi8_fonts.tgz
Распоковал и положил в папочку фонтс. Добавил
font=>\'ariali8.pfm\'
пишет 500 ошибку.
Если посмотреть вывод скрипта в шеле, вижу:
GNU Ghostscript 8.15: Unrecoverable error, exit code 1
Error: /rangecheck in --readstring--
Operand stack:
ariali8.pfm-ISO ariali8.pfm-ISO ariali8.pfm Font ariali8.pfm 221666 ariali8.pfm --nostringval-- ariali8.pfm (/bhome/part3/01/abik/gs/share/ghostscript/fonts/ariali8.pfm) false tables --nostringval-- ()
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- 3 3 %oparray_pop 4 3 %oparray_pop --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 7 4 %oparray_pop --nostringval-- --nostringval-- --nostringval-- %loop_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- %loop_continue --nostringval-- 12 --nostringval-- --nostringval-- false 1 %stopped_push --nostringval-- --nostringval-- --nostringval--
Dictionary stack:
--dict:1119/1686(ro)(G)-- --dict:0/20(G)-- --dict:72/200(L)-- --dict:17/17(ro)(G)-- --dict:1119/1686(ro)(G)-- --dict:28/50(ro)(G)-- --dict:6/40(L)--
Current allocation mode is local
Current file position is 263
Чтобы такого придумать, чтобы наконец заработали русские шрифты?
-
а попробуйте установить cyrillic (модуль полезный во многих ситуациях) и переписать код:
use Image::Magick;
use cyrillic qw(win2utf);
print "Content-Type: image/png\\n\\n";
my $im = Image::Magick->new(size => \'540x525\');
$im->Read(\'xc:white\');
$im->Set(magick=>\'png\');
$im->Set(stroke => \'red\');
my $text = \'Посмотрим что тут да как\';
$text = win2utf($text);
$im->Annotate(pointsize=>50, fill=>\'green\', text=>$text, x=>10, y=>200);
print $im->ImageToBlob();
exit;
в моем случае это работает и для Image::Magick, и для GD
-
AnnA, вывод немного видоменяеться (появились всякие символы вроде 1/4, 1/2 и т.п.). Но всё равно ничего хорошего:(
Не могли бы вы со своего хостинга скинуть папочку fonts мне на мыло: gleb[\'тяф!\']stalnoy.ru ?
Обычно она располагается по адресу:
/путь/к/gs/share/ghostscript/fonts
-
glebushka ну конечно я могла бы. мне и не жалко вовсе.
только у меня- в скрипте написано:
my $font = \'./data/ttf/arial.ttf\';
my $pix_font = \'./data/ttf/hoog0555_cyr2.ttf\';
соот-сно по указанным путям я самолично закачивала эти самые шрифты. ну, что скидывать?
arial у вас и так есть, понятное дело, а втрой могу скинуть
-
а. погодите-ка. в какой кодировке вы пишите $text = \'Посмотрим что тут да как\'? именно в win или в какой-то другой?
мы ведь пишем $text = win2utf($text);
-
AnnA, Arial это то который из виндавса? Если да, то кидать нет смысла:( После того, как я жёстко прописал шрифт по абсолютному пути у меня вообще перестал выводится какой бы то ни было текст:(
-
AnnA, упс, не заметил ваш ответ последний. Конечно win:) Но чтоб себя проверить. Я специально в браузер попробовал вывести текст, отконвертированный в утф8 с помощью этого модуля.
-
и чего, корючки вышли? ) а ГД у вас пишет по-русски?