【问题标题】:Saving image data of the fax job保存传真作业的图像数据
【发布时间】:2010-10-15 19:00:30
【问题描述】:

我正在使用 WinFax.dll 在我的应用程序中发送和接收传真,它目前运行良好。问题是我想将图像信息保存在 FaxJob 中,但输出不是任何可识别的格式。

我尝试过使用 Tiff、Gif、Bmp、Png 和 Jpg,但它不起作用,所以我认为我的操作方式可能存在问题。这是我用来获取图像的源代码:

公共类 FaxJob { 公共图像GetImage() { 单位宽度; 单位高度; 单位大小; 字节[] 数据; IntPtr 缓冲区; if (NativeMethods.FaxGetPageData(this.Server.faxHandle, this.id, out buffer, out size, out width, out height) == false) 抛出 FaxTools.CreateFaxException(string.Empty); 数据=新字节[大小]; Marshal.Copy(buffer, data, 0, Convert.ToInt32(size)); var ms = new MemoryStream(); ms.Write(data, 0, data.Length); var img = Image.FromStream(ms); 返回图片; } } 内部类 NativeMethods { [DllImport("WinFax.dll", SetLastError = true, EntryPoint = "FaxGetPageData")] [返回:MarshalAs(UnmanagedType.Bool)] 内部静态 extern bool FaxGetPageData(IntPtr FaxHandle, uint JobId, out IntPtr Buffer, out uint BufferSize, out uint ImageWidth, out uint ImageHeight); }

返回图像的 Width 和 Height 并且 byte[] 包含图像数据,似乎运行良好。

非常感谢任何想法。

【问题讨论】:

    标签: c++ unmanaged native fax


    【解决方案1】:

    我在查找 WinFax.dll 的文档时遇到了麻烦 - 所以我建议的第一件事是在调用 Marshal.Copy 之前用 0 填充缓冲区 - 然后您将确定缓冲区是否已被填充。如果它正在被填充,那么您将需要查看文件中的二进制数据,尝试猜测它的格式 - 您正在尝试识别标题数据。如果没有标题数据,只有图形,则需要添加一些标题信息。如果我能找到 WinFax 文档,那里可能会有更多线索。

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 1970-01-01
      • 2013-04-28
      • 2014-08-09
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      相关资源
      最近更新 更多