画像のバイト[]を受け入れることができるWebサービスを作成し、それをWebサーバーに保存しようとしています。コードは、データを送信するクライアントとデータを取得する Web サービスの 2 つの部分で構成されます。画像をアップロードしようとすると、次のエラーが発生します: System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: GDI+ で一般的なエラーが発生しました。
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 maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
問題は何かアドバイスはありますか?