사진을 하드 드라이브에 저장하십시오
-
13-12-2019 - |
문제
나는 조정하고 안전한 사진을 조정하고 안전하게 조정하고 일하는 것을 시도하고 노력하고 노력했습니다.거의 모든 것이 작동하지만 저장은 잘못된 인수 예외를 간합니다. 이것은 내가 가진 것입니다 :
private void ResizeImage(Image image)
{
int maxWidth = 100;
int maxHeight = 100;
int imageWidth = image.Size.Width;
int imageHeight = image.Size.Height;
double maxRatio = (double)maxWidth / (double)maxHeight;
double picRatio = (double)imageWidth / (double)imageHeight;
Image newImage = null;
if (maxRatio > picRatio && imageWidth > maxWidth)
{
newImage = new Bitmap(image, new System.Drawing.Size(Convert.ToInt32(maxWidth / picRatio), maxHeight));
}
else if (maxRatio < picRatio && imageHeight > maxHeight)
{
newImage = new Bitmap(image, new System.Drawing.Size(maxWidth, Convert.ToInt32(maxHeight / picRatio)));
}
// Encoder parameter for image quality
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality,1);
// Jpeg image codec
ImageCodecInfo jpegCodec = this.getEncoderInfo("image/jpeg");
if(jpegCodec != null){
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
newImage.Save(@".\temp\pdf\photos\test.jpg",jpegCodec,encoderParams);
}
}
private ImageCodecInfo getEncoderInfo(string mimeType)
{
// Get image codecs for all image formats
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
// Find the correct image codec
for (int i = 0; i < codecs.Length; i++)
{
if (codecs[i].MimeType == mimeType)
{
return codecs[i];
}
}
return null;
}
.
그러나 실행하려고하면 NewImage.ave ()
에 잘못된 인수 예외가 잘못되었습니다.해결책
MSDN , 인코더 품질 매개 변수는 64-비트 (긴) 값.이 줄을 변경하십시오 :
var qualityParam = new EncoderParameter(Encoder.Quality, 1);
.
~
var qualityParam = new EncoderParameter(Encoder.Quality, 1L);
. 제휴하지 않습니다 StackOverflow