将.tiff读取到内存中的字节数组,然后转换为图像

时间:2016-05-18 15:55:36

标签: c# image memorystream

我已经处理了一个涉及从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+.错误...

0 个答案:

没有答案