L
liuying1129
Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下,但转出来的TIF文件超大,查看有关的资料,应该转换为黑白就可以了(我的实际需求也是如此),但不知代码中哪里控制颜色?请大侠指点!procedure TfrmMain.BitBtn1Click(Sender: TObject);var Parameters: TEncoderParameters; Value: TEncoderValue; Img, tmp: TGpImage; I: Integer; Clsid: TClsid; sl: tstrings; TifName:string;begin sl:=tstringlist.Create; for i:=0 to ShellListView1.Items.Count-1 do begin if (ShellListView1.Items.Selected)and(LowerCase(ExtractFileExt(ShellListView1.Folders.PathName))='.jpg') then sl.Add(ShellListView1.Folders.PathName); end; if sl.Count=0 then begin showmessage('请选择要转换的jpg文件!'); sl.Free; exit; end; // 下面设置自定义的编码参数,这里为1个参数 Parameters.Count := 1; // 设置参数唯一标志的GUID,这里为保存标记 Parameters.Parameter[0].Guid := EncoderSaveFlag; Parameters.Parameter[0].NumberOfValues := 1; Parameters.Parameter[0].ValueType := EncoderParameterValueTypeLong; // 设置参数的值。这里只把Value地址赋给了参数值,Value在后面具体赋值 Parameters.Parameter[0].Value := @Value; TifName:=ChangeFileExt(sl[0],'.tif'); // 打开第一个图像,这里的图像是前面代码分解后保存的jpg文件 Img := TGpImage.Create(sl[0]); try // 获取图像格式tiff编码器的ClsID GetEncoderClsid('image/tiff', Clsid); // 在保存第一帧图像时,编码参数值设置为多帧 Value := EncoderValueMultiFrame; // 保存第一帧图像 Img.Save(TifName, Clsid, @Parameters); // 保存随后的各帧图像时,编码参数值设置为维度页 Value := EncoderValueFrameDimensionPage; // 依次打开后面的图像,保存到Hb.tif文件,本例图片为24帧 for I := 1 to sl.Count-1 do begin tmp := TGpImage.Create(sl); try Img.SaveAdd(tmp, @Parameters); finally tmp.Free; end; end; finally Img.Free; sl.Free; end; showmessage('转换完成!');end;