我试图做一个web服务,可以接受图像的字节[],并将其保存到网络服务器。 该代码由两部分组成,即发送数据的客户端和获取数据的Web服务。 尝试上传图像时出现以下错误: System.ServiceModel.FaultException`1 [System.ServiceModel.ExceptionDetail]:在GDI +中发生了一般性错误。C#保存图像(字节[])通过Web服务
myImage是一个System.Drawing图像。
private byte[] imageToByteArray(Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,ImageFormat.Png);
return ms.ToArray();
}
using (Something.ClientServiceClient client = new Something.ClientServiceClient())
{
client.Open();
client.uploadScreenShot(imageToByteArray(myImage));
}
的web服务看起来如下:
public void uploadHofScreen(byte[] imgArray)
{
Image nImg = byteArrayToImage(imgArray);
Bitmap bitmap = new Bitmap(nImg);
saveJpeg("/1/test.jpg", bitmap, 85L);
}
private void saveJpeg(string path, Bitmap img, long quality)
{
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
ImageCodecInfo jpegCodec = getEncoderInfo("image/jpeg");
if (jpegCodec == null)
return;
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
img.Save("XXXX" + path, jpegCodec, encoderParams);
}
private ImageCodecInfo getEncoderInfo(string mimeType)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
for (int i = 0; i < codecs.Length; i++)
if (codecs[i].MimeType == mimeType)
return codecs[i];
return null;
}
无论是webconfig和AppConfig中有以下readerQuotas:
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
任何意见,什么问题?
该问题不在WCF中。调试图像处理以获得更详细的错误。 –
你确定这不是[重复这个](http://stackoverflow.com/questions/1781390/saving-an-image-a-generic-error-occurred-in-gdi?rq=1)? – Jeroen
你的'byteArrayToImage'是怎么样的? – tofi9