사이트에 사용자 갤러리가 있으며 방문자가 일부 이미지를 업로드 할 수 있습니다. 업로드 후 이미지는 미리 정의 된 사전 설정으로 리사이즈해야합니다. 또한 원본 이미지도 저장해야합니다. 모두 png
및 bmp
이미지 형식에서 정상적으로 작동합니다. 그러나 gif
형식을 업로드하거나 jpeg
을 우위로 업로드하면 업로드 된 원본 이미지가 압축 된 것처럼 보입니다. 예를 들어품질 저하없이 이미지 업로드
:
원본 :
업로드 :
내가 thorougly 구글에서 검색하는 방법과 이미지를 오른쪽으로 업로드하는 몇 가지 예를 발견했다. 끝에서 나는 다음 방법 작성했습니다 :
void UploadImagePreset(Image image, ImageFormat imgFormat, string imgPath)
{
using (var uploadStream = imageUploader.CreateUploadStream(imagePath))
{
var newWidth = image.Width;
var newHeight = image.Height;
using (var outBitmap = new Bitmap(newWidth, newHeight))
{
using (var outGraph = Graphics.FromImage(outBitmap))
{
outGraph.CompositingQuality = CompositingQuality.HighQuality;
outGraph.SmoothingMode = SmoothingMode.HighQuality;
outGraph.PixelOffsetMode = PixelOffsetMode.HighQuality;
outGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
var imageRect = new Rectangle(0, 0, newWidth, newHeight);
outGraph.DrawImage(image, imageRect);
outBitmap.Save(uploadStream, imgFormat);
}
}
}
}
를하지만 도움이되지 않았다. 업로드 된 이미지는 위에서 설명한 것과 동일합니다. 나는이 같은 결과 이미지의 qaulity를 지정하는 tryied 한 :
var encoderParameters = new EncoderParameters();
var encoderParameter = new EncoderParameter(Encoder.Quality, 100);
encoderParameters.Param[0] = encoderParameter;
var encoder = ImageCodecInfo.GetImageEncoders()
.Where(e => e.FormatID == imgFormat.Guid)
.FirstOrDefault();
outBitmap.Save(uploadStream, encoder, encoderParameters);
너무 작동하지 않습니다. 또한 jpeg 이미지를 업로드 할 때 예외가 발생합니다.
압축하거나 크기를 조정하지 않고 이미지를 업로드하는 방법은 무엇입니까? 나는이 문제를 해결하려고 노력하고 몇 시간을 보냈다.
업로드가 어떻게되는지는 확실하지 않습니다. 추가 클라이언트 코드가없는 브라우저에서만 클라이언트에있는 정확한 파일을 가져와야합니다. 문제가 업로드 (또는 ASP.NET)에 아무런 영향을 미치지 않으며 * 단지 * 일뿐입니다. 크기 조정과 관련있다. –
여분의 클라이언트 코드없이 FileUpload 컨트롤을 사용합니다. –
맞습니다. 업로드 된 파일을 처리하지 않고 * 저장하면 * 똑같은 파일로 끝납니다. 자신에게 그 사실을 입증하면 업로드 부분을 방정식에서 제거 할 수 있습니다. 가능한 한 작은 영역으로 문제를 좁히십시오. –