여기에 나와있는 내용이 있습니다. 나는 그렇게 표준 코드를 사용하는 동안 내 노트북 카메라에서 이미지를 압축하는 기능을 사용하려고 해요 : 압축이 완료인코딩 된 이미지를 저장하면 GDI + 오류가 반환됩니다.
public static byte[] EncodeImage(this Image image)
{
using (MemoryStream ms = new MemoryStream())
{
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80);
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
image.Save(ms, jpegCodec, encoderParams);
return ms.ToArray();
}
}
후, 데이터베이스에 저장합니다. 좋은 압축률 (500 000 바이트 대 32 000)을 제공합니다. 잠시 후 winforms 응용 프로그램에서 이미지를 사용자에게 보여줘야합니다.
using (MemoryStream ms = new MemoryStream(entity.Photo))
fotoPictureBox.Image = Image.FromStream(ms);
다시 말하면 멋진 이미지를 표시합니다. 그러나 사용자가 이미지를 다운로드하고 적절한 위치에서 저장할 수 있기를 바랍니다. 그리고 이것이 모든 문제가 발생했을 때입니다. 이 코드를 사용하는 경우
는 :
fotoPictureBox.Image.Save(imageSaveFileDialog.FileName);
을 나는 전형적인 generic GDI+
오류를 receieve. 나는 내가 (라인 image.Save(targetPath, jpegCodec, encoderParams);
를 가리키는)이 오류가 그것을
public static void SaveEncodedImage(this Image image, string targetPath)
{
ImageCodecInfo jpegCodec = Pomocne.GetEncoderInfo("image/jpeg");
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80);
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
image.Save(targetPath, jpegCodec, encoderParams);
}
인코딩 한 코드를 사용하여 이미지를 저장하려고하면 :
An unhandled exception of type System.ArgumentException occurred in System.Drawing.dll Additional information: Parameter is not valid.
사람이 도와 주실 수 있습니까? 오히려 급한 일입니다. 고마워요.
몇 가지 질문/답변을 해결하려면 아마도이 코드로 이미지를 압축하지 않으면 이미지를 선택한 경로에 문제없이 저장할 수 있습니다. 그래서 디코딩이나 이와 비슷한 문제가 있습니다. 내가 가지고 있기 때문에 충분한 권한이 있는지 묻지 마십시오.