c#
c# image to byte 이미지 바이트로 전환, 이미지 압축 하는 법
범백
2023. 2. 27. 19:45
이미지를 바이트로 전환하여 압축하는 방법입니다.
EncoderParameter클래스를 사용하여 압축의 퀄리티를 지정 할 수 있습니다.
0L과 가까울수록 이미지가 더 압축되어 깨짐현상이 있을 수 있습니다.
아래는 이미지를 선택하여 압축을 한 복사본을 만드는 예제 코드입니다.
public FrmImagecs()
{
InitializeComponent();
OpenFileDialog dlg = new OpenFileDialog();
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
dlg.Filter = "jpg files (*.jpg)|*.jpg|jpeg files (*.jpeg)|*.jpeg|bmp files (*.bmp)|*.bmp|gif files (*.gif)|*.gif|png files (*.png)|*.png|All files (*.*)|*.*";
Bitmap bmp = new Bitmap(dlg.FileName);
ImageConverter imgConverter = new ImageConverter();
byte[] imgByte = (byte[])imgConverter.ConvertTo(bmp, typeof(byte[]));
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 25L);
myEncoderParameters.Param[0] = myEncoderParameter;
string path = @"c:\catCopy.jpg";
bmp.Save(path, jpgEncoder, myEncoderParameters);
}
}
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
테스트결과
cat.jpg를 압축한 catcopy의 사이즈를 보면 대략 4분의 1 수준으로 사이즈가 작아졌습니다.