我已经处理了一个涉及从Access数据库表中读取记录并将此信息放入大型PDF小册子的项目。
Access表中的一列是包含.tiff图像信息的MEMO列。我从写入文本文件的文件信息以“II *”开头这一事实收集到了这一点,我读过的是一个.tiff标题,说明该文件是英特尔字节顺序。
所以,说到这里,我需要将这个MEMO字段转换为图像并将该图像写入PDF,如果可能的话,我想在内存中完成。
我到目前为止实际转换的代码是:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Collections.Generic;
using System.Text;
namespace ElectionsPollBooks
{
class ImageConversion
{
public Image ConvertMemo(string s_convert)
{
byte[] ba_incTiff = Encoding.Unicode.GetBytes(s_convert);//string of information from the Memo field in the Access Database
using (MemoryStream ms_incTiffImage = new MemoryStream(ba_incTiff))//takes our just converted byte array and reads it to memory as the input tiff
{
return Image.FromStream(ms_incTiffImage);//take said tiff stream that we just made, and return it as an image.
}
}
}
}
现在我在"Parameter is not valid"
方法上遇到return Image.FromStream(ms_incTiffImage);
错误,我理解这意味着字节数组不是Image.FromStream()
方法理解的任何形式的数据。
这让我想知道我的问题是否在使用此行中的Unicode编码读取字符串:byte[] ba_incTiff = Encoding.Unicode.GetBytes(s_convert);
但这对我来说是一个全新的领域,我不确定我的思维过程是否正确。
任何帮助都将不胜感激。
谢谢大家的时间。
更新
当我将MEMO字段输出到File.WriteAllText(@"Irrevelvant\Path\Foo\test.txt", s_convert);
我最终将其作为输出的片段:
II *ê€?à8$“BaP¸d6DbQ8¤V-ŒFcQ¸äv= HdR9 $ -M”“JeR¹d¶”/〜LfS9¤Öm7œNgS¹äö}?
其他一些信息:
ba_incTiff
最终计数为14176个字节,前5个是73,0,73,0,42(我不确定它是否相关,但我现在正抓住稻草)
更新
我能够发现MEMO中存储的信息是否存在任何特殊编码,以确定没有。
通过将byte[] ba_incTiff = Encoding.Unicode.GetBytes(s_convert)
更改为byte[] ba_incTiff = Encoding.Default.GetBytes(s_convert);
,我能够解决问题。
但是,现在我收到了A generic error occurred in GDI+.
错误...