找回密码
 立即注册

QQ登录

只需一步,快速开始

mosquito

初级会员

24

主题

138

帖子

328

积分

初级会员

积分
328

[已处理] 保存报错

mosquito
初级会员   /  发表于:2016-5-14 10:29  /   查看:6792  /  回复:8
您好:
        保存图片是报错,麻烦您给看下:

保存代码如下:
  1. private void 保存本地ToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.             RasterImage image = null;
  4.             using (SaveFileDialog sfd = new SaveFileDialog())
  5.             {
  6.                 sfd.Filter = "扫描图像文件(*.pdf)|*.pdf|扫描图像文件(*.tif)|*.tif;";
  7.                 if (sfd.ShowDialog() == DialogResult.OK)
  8.                 {
  9.                     string fileName = sfd.FileName;
  10.                     string ext = fileName.Substring(fileName.LastIndexOf(".") + 1);

  11.                     if (Directory.Exists(_tempFilePath))
  12.                     {
  13.                         DirectoryInfo dir = new DirectoryInfo(_tempFilePath);
  14.                         FileInfo[] files = dir.GetFiles();
  15.                         SortAsFileName(ref files);
  16.                         if (files.Count() > 0)
  17.                         {
  18.                             for (int i = 0; i < files.Count(); i++)
  19.                             {
  20.                                 RasterImage tempImage = _codecs.Load(files[i].FullName, 1);
  21.                                 if (image == null)
  22.                                     image = tempImage;
  23.                                 else
  24.                                     image.AddPage(tempImage);
  25.                             }
  26.                         }

  27.                     }
  28.                     if (ext == "pdf")
  29.                     {
  30.                         _codecs.Save(image, fileName, RasterImageFormat.RasPdf, image.BitsPerPixel, 1, image.PageCount, 1, CodecsSavePageMode.Overwrite);
  31.                         image.Dispose();
  32.                     }
  33.                     if (ext == "tif")
  34.                     {
  35.                         _codecs.Save(image, fileName, RasterImageFormat.Tif, image.BitsPerPixel, 1, image.PageCount, 1, CodecsSavePageMode.Overwrite);
  36.                         image.Dispose();
  37.                     }
  38.                 }
  39.             }
  40.         }
复制代码

保存为pdf时报错,保存为tif时没事
测试图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

8 个回复

倒序浏览
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-5-16 09:23:32
沙发
你能把整个工程给我不。就是除了Bin和Obj目录以外的所有打个包。
回复 使用道具 举报
mosquito
初级会员   /  发表于:2016-5-16 13:41:47
板凳

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-5-16 17:41:56
地板

收到,我这边调查一下。
回复 使用道具 举报
mosquito
初级会员   /  发表于:2016-5-19 14:31:36
5#
您那么还没有结果吗?
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-5-19 17:57:14
6#
mosquito 发表于 2016-5-19 14:31
您那么还没有结果吗?

已经发给Support了,还没有收到回复。
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-5-19 18:26:34
7#
本帖最后由 AvoCaDolol 于 2016-5-19 18:30 编辑
mosquito 发表于 2016-5-19 14:31
您那么还没有结果吗?

我刚试了一下你的代码,发现了错误。
_codecs.Save(image, fileName, RasterImageFormat.RasPdf, image.BitsPerPixel, 1, image.PageCount, 1, CodecsSavePageMode.Overwrite);
这一行中,有一个参数:BitsPerPixel。这个参数在官方的解释中是这样的:Resulting file's pixel depth. Note that not all bits per pixel are available to all file formats.
大意是根据不同保存文档格式,每个文档格式支持的Bit数也有所不同。
你这边是要保存成RasPDF,RasPDF所支持的Bit数为:1, 2, 4, 8, 24 BPP,而你的TIF原始图片的Bit数为16.
所以导致保存出错。
修改方法:将image.BitsPerPixel改为0即可。
0的意义是将使用最接近当前图片的高一些Bit数来保存,例如:tif图片为16bit,保存后RasPDF则为24bit。
这个参数的具体说明请参考:点击查看

每种保存格式的支持Bit数请参考:https://www.leadtools.com/help/l ... agefileformats.html
回复 使用道具 举报
mosquito
初级会员   /  发表于:2016-5-20 08:42:42
8#
CodecsSavePageMode.Overwrite这个参数必须设置吗,这个参数是做什么用的来,还有我要是想保存为pdf的话是不是必须得用RasterImageFormat.RasPdf呀,这样保存的是标准的pdf吗
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-5-20 09:23:41
9#
mosquito 发表于 2016-5-20 08:42
CodecsSavePageMode.Overwrite这个参数必须设置吗,这个参数是做什么用的来,还有我要是想保存为pdf的话是 ...

RasterCodecs.Save方法的重载有很多,这只是其中一个,这个参数不是必须,有一个重载就只有三个参数:路径、保存格式、图像Bit。
具体你这边需要哪一种,可以参考下面的链接:
https://www.leadtools.com/help/l ... tercodecs~save.html
保存PDF的话不用这个肯定不行啊,你传个JPG进去也没法保存PDF啊。
这个RasPDF保存的当然是标准格式的PDF了,要不你咋能用PDF阅读器打开呢。我没有理解你想问的点。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部