我試圖做一個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