这是我的代码:
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);
}
}
时,出现错误
参数无效
请给我一个解决方案
答案 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