gpt4 book ai didi

c# - 使用字节数组转换发送图像,从java到c#

转载 作者:搜寻专家 更新时间:2023-11-01 07:56:32 25 4
gpt4 key购买 nike

我正在尝试将我的 android 设备上的 .jpg 文件发送到我的服务器计算机。

为此,我通过 java android 应用程序将图片转换为字节数组,并将其作为参数发送到我的服务器计算机。我通过网络服务调用来做到这一点。

第一个函数编辑:

public static byte[] ImageConvertion(){

File inputFile = new File("/storage/emulated/0/IFSpictures/icon-si_strapclamp.jpg");
byte[] data;

try{
FileInputStream input = new FileInputStream(inputFile);
ByteArrayOutputStream output = new ByteArrayOutputStream ();

byte[] buffer = new byte[65535];

int l;

while ((l = input.read(buffer)) > 0)
output.write (buffer, 0, l);

input.close();
output.close();

data = output.toByteArray();
return data;


} catch (IOException e) {
System.err.println(e);
data=null;
}
return data;

}

我的网络服务是用 ASP.NET (C#) 语言编写的,并且有一个函数将字节数组作为参数并将其转换回服务器计算机上的图像。

[WebMethod]
public void ByteArrayToPicture(byte[] imageData)
{
using (var ms = new MemoryStream(imageData))
{
Image image = Image.FromStream(ms);
image.Save(@"C:\newImage.jpg");
}
}

但是,由于网络服务方面的原因,我无法做到这一点。我已经调试过了,看来问题出在 Image.FromStream() 函数上。

我在传递参数方面绝对没有任何问题。我认为,语言冲突或将图像转换为字节和反之亦然可能是导致问题的原因。有没有人有任何想法或看到错误?

我非常愿意提供任何帮助。

谢谢。

最佳答案

很抱歉我的问题不完整,但是我想给正在尝试做同样事情的人一些提示。

如果有人试图将图像发送到服务器并且双方有不同的平台,那么不要将图像转换为字节数组!

原因是,在我的例子中,在 Java 上转换为字节数组的图像与 C# 上的字节数组不同。因此根据我的研究,不可能在服务器端收集图像。在 Java 上创建的字节数组在 C# 上没有正确的格式。

因此,任何人都希望将数据从一种语言传输到另一种语言,使用 Base64 编码。在一侧将图像转换为 Base64 字符串,并将其作为字符串发送到另一种语言。由于 Base64 格式在每种语言上都是相同的,因此复制它不会有任何问题。

我用以下代码解决了这个问题:

Bitmap ourbitmap = BitmapFactory.decodeStream(imageStream, null, options);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ourbitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
test = Base64.encodeToString(b, Base64.DEFAULT);

这是我在 Java android 应用程序上获取图像并将其转换为 Base64 字符串的代码,

byte[] imageBytes = Convert.FromBase64String(Base64ImageData); 
MemoryStream ms = new MemoryStream(imageBytes, 0,
imageBytes.Length);

ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms, true);
image.Save(@"D:\tmpImage.jpg");

上面的代码采用 Base64 类型的字符串并将其转换回图像。这是用 C# 编写的。

关于c# - 使用字节数组转换发送图像,从java到c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27285367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com