尝试将字节转换为图像时出现错误“参数无效”

时间:2016-04-29 09:55:00

标签: c# asp.net

这是我的代码:

N = 1e4;
k = .0001;

% setup
x = rand(N, 1);

inds = find(rand(1,N^2) <= k);
values = 2*(randi(2, 1, length(inds))-1)-1;

% dense
fprintf('dense\n')
A = zeros(N,N);
A(inds) = values;

for i = 1:5
    tic;
    y = A*x;
    toc;
end

% sparse
fprintf('sparse\n')
A = sparse(N,N);
A(inds) = values;

for i = 1:5
    tic;
    y = A*x;
    toc;
end

调用方法string photo = "somedata"; byte[] byt = System.Text.Encoding.UTF8.GetBytes(photo); string strModified = Convert.ToBase64String(byt); byte[] photoData = Convert.FromBase64String(strModified); Image img = cnvrtToImg(photoData); public Image cnvrtToImg(byte[] byteArrayIn) { using (MemoryStream mStream = new MemoryStream(byteArrayIn)) { return Image.FromStream(mStream); } } 时,出现错误

  

参数无效

请给我一个解决方案

1 个答案:

答案 0 :(得分:0)

我认为System.Text.Encoding.UTF8不是用于图像数据,而是用于文本,而不是二进制数据。 UTF8不能做一些二进制序列。如果您需要将二进制文件转换为文本,则可以选择Base64。 我测试了这个,并确认cnvrtToImg是正确的:

class Program
{
    public static Image cnvrtToImg(byte[] byteArrayIn)
    {
        using (MemoryStream mStream = new MemoryStream(byteArrayIn))
        {
            return Image.FromStream(mStream);
        }
    }
    static void Main(string[] args)
    {
        using (var file = File.Open(@"D:\0.jpg", FileMode.Open))
        {
            var buffer = new byte[file.Length];
            file.Read(buffer, 0, (int) file.Length);
            cnvrtToImg(buffer);
        }
    }
}

//finish