我有一个包含BMP图像的BMP图像对象,如何在不保存到文件的情况下将其转换为JPEG格式?
我只需要知道转换后JPEG文件的大小,因此,如果我有几张BMP图像,我想将它们中的每一个转换为JPEG,然后查看每一个的大小。
我该怎么做?
谢谢。
答案 0 :(得分:0)
只需保存它的流。和外观尺寸。
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
private void Form1_Load(object sender, EventArgs e)
{
Bitmap bmp1 = new Bitmap(@"C:\Users\ercan.acar\Pictures\Current CR Sticker.PNG");
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
System.Drawing.Imaging.Encoder myEncoder =System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder,
50L);
myEncoderParameters.Param[0] = myEncoderParameter;
Stream stream=new MemoryStream();
bmp1.Save(stream, jpgEncoder,myEncoderParameters);
//bmp1.Save(@"C:\Users\ercan.acar\Documents\TestPhotoQualityFifty.jpg",);
var size = stream.Length;
}
答案 1 :(得分:0)
如何使用诸如Magick.NET或类似的nuget包。 为什么要重新发明轮子,而又关心编码,转换调整和优化,如果其他人已经为您做过的话。