여러 부분으로 구성된 문제가 있습니다. 대부분 문제는 없습니다. 이미지 스트림을 읽고, 지정된 크기로 자동으로 크기를 조정하고, 특정 레벨 (해당되는 경우)로 이미지를 압축 한 다음 이미지 스트림을 반환하는 기능과 원본 이미지 형식을 유지하고 투명성을 유지하는 기능이 필요합니다. any).해당 형식의 이미지를 스트림에 저장하십시오.
이 작업에는 간단한 크기 조정 기능이 포함되어 있습니다. 문제가 없습니다.
그것은 원래의 이미지 형식을 읽는 포함하고,이 코드가 작동하는 것 같다 : 나는 붙어있어 어디 이미지 스트림을 반환
// Detect image format
if (newImage.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
{
//etc for other formats
}
//etc
이다. 압축 된 스트림을 반환 할 수 있지만 기본값은 JPEG입니다. 형식을 지정할 위치가 표시되지 않습니다. 그리고 이미지를 두 번 저장하여 형식을 지정하면 투명도가 손실됩니다.
나는이 개 질문이 추측 :
1) 나는 이미지의 크기를 조절하면, 나는 또한 PNG의 알파 투명도를 다시해야합니까? 2) 필요할 때 투명도를 유지하면서 각 형식의 메모리 스트림에 어떻게 저장할 수 있습니까?
여기 내 코드가 잘못되었습니다.
System.Drawing.Imaging.ImageCodecInfo[] Info = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
System.Drawing.Imaging.EncoderParameters Params = new System.Drawing.Imaging.EncoderParameters(1);
long ImgComp = 80;
Params.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ImgComp);
MemoryStream m_s = new MemoryStream();
// Detect image format
if (newImage.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
{
newBMP.Save(m_s, ImageFormat.Jpeg);
}
else if (newImage.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
{
newBMP.Save(m_s, ImageFormat.Png);
}
// Save the new graphic file to the server
newBMP.Save(m_s, Info[1], Params);
retArr = m_s.ToArray();
사이즈를 재조정 할 때 투명성을 잃어 버리는 것에 대한 흥미로운 점이있다. http://stackoverflow.com/questions/753968/why-does 이미지를 잃는 투명화 – Lucas