将图像转换为字节数组会产生Null异常

时间:2012-09-30 08:23:40

标签: vb.net

当我尝试将Image转换为Byte Array时,它会给我Null Exception。我将图像分成4个相等的部分,然后将每个部分转换为字节数组。

    OpenFileDialog1.ShowDialog()
    i = Image.FromFile(OpenFileDialog1.FileName)

    Dim g As Graphics
    Dim OriginalBit As New Bitmap(i)
    Dim x1 = 0, y1 = 0, x, y, k As Integer
    x = i.Width / 2
    y = i.Height / 2
    Dim i1, i2, i3, i4 As Image
    Dim bit As Bitmap = OriginalBit.Clone(New RectangleF(0, 0, x, y), Imaging.PixelFormat.DontCare)
    PictureBox2.Width = bit.Width
    PictureBox2.Height = bit.Height
    i1 = bit

enter image description here

但是当我将Split-ted Bitmapimage对象(位)分配给Imageobject(i1)并尝试将其转换为Byte Array时,它会给我带来错误。

1 个答案:

答案 0 :(得分:0)

查看我注意到的异常:Parameter name: encoder

所以我认为i1.RawFormat中的某些内容是错误的,而不是i1本身。 剪切操作或Clone(....,Imaging.PixelFormat.DontCare)可能会在没有正确设置RawFormat值的情况下保留位对象。

我现在无法测试,但我会尝试

Dim bit As Bitmap = OriginalBit.Clone(New RectangleF(0, 0, x, y), OriginalBit.PixelFormat) 

i1.Save(mem, OriginalBit.RawFormat)