gpt4 book ai didi

c# - 将图像从 Android 发送到 C# webservice

转载 作者:行者123 更新时间:2023-11-30 02:04:41 25 4
gpt4 key购买 nike

我正在将图像从 Android 发送到 C# 网络服务。我总是得到黑色图像。有人可以帮忙吗?

安卓端:

 public void save(View v) {           
mBitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.JPEG,40, outputStream);
byte[] imgByte = outputStream.toByteArray();
String base64Str = Base64.encodeToString(imgByte, Base64.DEFAULT);
// Send base64Str to server
}

C# 端:

[WebMethod]
public void GetImage(string base64ImageStr)
{
byte[] imageBytes = Convert.FromBase64String(base64ImageStr);
//Save imageBytes to DB
}

我从数据库调用它:

 public ActionResult Image(){
var bytes=GetBytesArrayFromDB(id);
return File(bytes, "image/jpeg");
}

在 View 中:

<img src='@Url.Action("Image")' alt="" />

最佳答案

我想通了在将它发送到服务器之前我没有对其进行 Canvas 。也用这个

Canvas canvas = new Canvas(mBitmap);v.draw( Canvas );

 public void save(View v) {           
mBitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.JPEG,40, outputStream);
byte[] imgByte = outputStream.toByteArray();
String base64Str = Base64.encodeToString(imgByte, Base64.DEFAULT);

Canvas canvas = new Canvas(mBitmap);
v.draw(canvas);

// Send base64Str to server
}

//发送base64Str到服务器

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
public class CallSoap
{
public final String SOAP_ACTION = //url;
public final String OPERATION_NAME = "name of action";
public final String WSDL_TARGET_NAMESPACE = "asmx url";
public final String SOAP_ADDRESS = "soap address";
public CallSoap()
{
}
public String Call(String base64Str)
{
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);

PropertyInfo pi=new PropertyInfo();
pi.setName("base64Str");
pi.setValue(base64Str);
pi.setType(String.class);
request.addProperty(pi);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);

HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
Object response=null;
try
{
httpTransport.call(SOAP_ACTION, envelope);
response = envelope.getResponse();
}
catch (Exception exception)
{
response=exception.toString();
}
return response.toString();
}

关于c# - 将图像从 Android 发送到 C# webservice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30877646/

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