免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1044 | 回复: 0
打印 上一主题 下一主题

perl Imager操作tif文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-02 11:08 |只看该作者 |倒序浏览

                                背景:
    header决定耗费近20%的效率来提供一个我认为不是很关键的需求.即中文传真头.没办法,只能去google看有没有办法了.tifflib似乎并不难,但需要图形基础,且向上面画文字似乎不是一朝一夕就被我搞定的.于是求救于perl,最后找到Imager与GD库,但又遭遇字体(开始认为是Unicode)问题.做个菜鸟真难呀,好不容易看英语文档弄懂了其使用方法,可是结果总不是我翻译过来的那个效果,于是只能猜了......那种成功就在眼前,却似乎又越来越远的感觉真的折磨人呀.我已经感觉累了,快放弃了,google都不知开了多少回输入了多少相关的英语和汉语,可是总是跑到几乎相同的网页或是其翻译版.于是我开始搜索看似相关性越来越远的词汇,自己的设想也越来越大胆(不知所措的代词).最终,只是一个小想法让我觉得无奈,原来一开始做的工作都是对的,只是自己没有提供一个合适的中文字体,疯了!
正文:
    T.30传真协议头不支持中文,那么只能修改欲发送的传真的源文件,将传真头信息插入到文件头来欺骗传真机.
    别的不多说了,先看代码:
               
               
                #!/usr/bin/perl --
use Imager;
use strict;
#判断支持的字体类型
print "Has truetype"      if $Imager::formats{tt};
print "\n";
print "Has t1 postscript" if $Imager::formats{t1};
print "\n";
print "Has Win32 fonts"   if $Imager::formats{w32};
print "\n";
print "Has Freetype2"     if $Imager::formats{ft2};
print "\n";
sub writeFaxHeader{
    print "===writeFaxHeader===\n";   
    my ($srcImage, $header, $newImage) = @_;
#本机的字体文件全路径
    my $fontfile="/usr/share/fonts/truetype/arphic/uming.ttf";
    my $font=Imager::Font->new(file=>$fontfile, type=>'ft2') or die "No";
#创建一个新的Imager对象
    my $img=Imager->new();
#从一个tiff文件中读取数据
    $img->read(file=>$srcImage, type=>'tiff') or die $img->errstr();
#向图片的指定位置绘制指定文本,字体用的是上面创建的font对象
    $img->string(font=> $font, x=>0, y=>50, string=>$header, color=> 'black'    , size=>50, aa=>1, utf8=>1) or die $img->errstr();
#将修改的Imager对象写回磁盘
    $img->write(file=>$newImage, type=>'tiff', class=>'fax') or die $img->errstr;
    print "===Header ok===\n";
}
writeFaxHeader("src.tif", "大家好", "head.tif");
    看上去挺简单的,实际上呢,也是挺简单的.但是对于我这样一个菜鸟来说真是头疼死了.中文字符码,仿佛是一真追随我的编程问题.步步为艰.一开始,流程全都正确,就是绘出的中文全是方框或乱码.现在知道是字体路径的问题,应该用支持中文的字体,如:uming.ttf,ukai.ttf这两个文鼎字体,当然其他的中文字体也应该是可以的,但是英文字体就会是方框或乱码.
    做个菜鸟不容易,现在好了,跳过一槛.
参考:
CPAN Imager
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/48467/showart_454781.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP