GDI+如何实现多页tiff文件的添加和移除?

fisher_older 2010-09-21 04:03:28
一个多页的tif文件,比如'try.tif',里面有四页,如何删掉第三页并保存?还有如何在第三页插入一个图片(如'a.bmp'),并保存?
...全文
351 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fisher_older 2010-09-26
  • 打赏
  • 举报
回复
谢谢lqfcu2。你的回答对我帮助很大,不过主要问题并没有解决,期待第二个高人出现。
lqfcu2 2010-09-26
  • 打赏
  • 举报
回复
例子是自己程序里用的,Parameter[1]编译不过是因为你所用的GDI+库文件里Parameter这个数组定义为一个元素的数组
fisher_older 2010-09-23
  • 打赏
  • 举报
回复
还有Parameter[1]为何编译不通过?
fisher_older 2010-09-22
  • 打赏
  • 举报
回复
lqfcu2,您的那个改变tif压缩方式的例子哪儿有?如果要读取一个tif的压缩方式能做到吗?不用分页,直接改变一个tif文件的压缩方式可行么?应该怎么做?
lqfcu2 2010-09-21
  • 打赏
  • 举报
回复
指定位置好像不行。。。。
fisher_older 2010-09-21
  • 打赏
  • 举报
回复
看来添加是可以的,那么如何指定位置添加呢?
lqfcu2 2010-09-21
  • 打赏
  • 举报
回复
multiClone.SaveAdd(newImage: TGPImage;encoderParams: PEncoderParameters)
fisher_older 2010-09-21
  • 打赏
  • 举报
回复
呵呵,只是举个例子。

multi := TGPImage.Create('try.tif'); //tif文件
multiClone:=multi.Clone;
ImgAdd := TGPImage.Create('a.bmp'); //需要添加的文件

那么如果将ImgAdd加入multiClone呢?注意multiClone暂时不保存到try.tif
lqfcu2 2010-09-21
  • 打赏
  • 举报
回复
上万页,这大的TIF文件,用在什么方面的啊?
fisher_older 2010-09-21
  • 打赏
  • 举报
回复
尤其是tif有很多页,比如上万页时,这个方法就显得笨了点。
lqfcu2 2010-09-21
  • 打赏
  • 举报
回复
好像不能直接删除某一页,或者在某一位置插入一页吧。。。
fisher_older 2010-09-21
  • 打赏
  • 举报
回复
谢谢lqfcu2。tif的合并与分解我会的。
当然可以通过先分解然后再将需要的图片保存到原tif文件,但是感觉这个方法不是很好,我想知道有没有更好的方法?
lqfcu2 2010-09-21
  • 打赏
  • 举报
回复
上面的代码是改变TIF压缩方式的,先是把多帧分解成单页的然后换压缩方式保存成单面TIF文件,仅供参考
lqfcu2 2010-09-21
  • 打赏
  • 举报
回复
给你一个代码片段


tbmp:=TGPBitmap.Create(tifpath);
tbmp.GetFrameDimensionsList(@GUID, 1);
//得到多帧TIF文件的页数
Count:=tbmp.GetFrameCount(GUID);
Parameters.Count := 2;

Parameters.Parameter[0].Guid := EncoderSaveFlag;
Parameters.Parameter[0].NumberOfValues := 1;
Parameters.Parameter[0].Type_:= EncoderParameterValueTypeLong;

Parameters.Parameter[0].Value:=@Value;
GetEncoderClsid('image/tiff', GUID1);

if Count <= 1 then
begin
try

Value1:=EncoderValueCompressionCCITT3;
Parameters.Parameter[1].Guid := EncoderCompression;
Parameters.Parameter[1].NumberOfValues := 1;
Parameters.Parameter[1].Type_:= EncoderParameterValueTypeLong;
Parameters.Parameter[1].Value:= @Value1;
for k:=0 to Count-1 do
begin
tbmp.SelectActiveFrame(GUID,k);
tbmp.Save(outpath,GUID1,@Parameters);
end;
finally
tbmp.Free;
end;
lqfcu2 2010-09-21
  • 打赏
  • 举报
回复
TIF文件用GDI+可以分解和合成的,网上有一个例子,楼主搜搜

1,185

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧