怎么才能把图片变小,System.Drawing.Imaging.Encoder.Quality 说是1-100, 但我修改成那个都一样都是120kImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo i in icis)
{
if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")
{
ici = i;
}
}
EncoderParameters encoderParams = new EncoderParameters();
long[] quality = new long[1];
quality[0] = 80; //压缩比例,
EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
//EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ((long)80));
encoderParams.Param[0] = encoderParam;
bitmap.Save(thumbnailPath, ici, encoderParams);
encoderParams.Dispose();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo i in icis)
{
if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")
{
ici = i;
}
}
EncoderParameters encoderParams = new EncoderParameters();
long[] quality = new long[1];
quality[0] = 80; //压缩比例,
EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
//EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ((long)80));
encoderParams.Param[0] = encoderParam;
bitmap.Save(thumbnailPath, ici, encoderParams);
encoderParams.Dispose();
public static byte[] ResizeImageFile(byte[] imageFile, int targetSizeW, int targetSizeH){ System.Drawing.Image original = System.Drawing.Image.FromStream(new MemoryStream(imageFile)); int targetH, targetW; targetW = targetSizeW; targetH = (int)(original.Height * ((float)targetSizeW / (float)original.Width)); if (targetH > targetSizeH) { targetH = targetSizeH; targetW = (int)(original.Width * ((float)targetSizeH / (float)original.Height)); } if (targetSizeW < (int)original.Width || targetSizeH < (int)original.Height) { System.Drawing.Image imgPhoto = System.Drawing.Image.FromStream(new MemoryStream(imageFile)); // Create a new blank canvas. The resized image will be drawn on this canvas. Bitmap bmPhoto = new Bitmap(targetW, targetH, PixelFormat.Format24bppRgb); bmPhoto.SetResolution(72, 72); Graphics grPhoto = Graphics.FromImage(bmPhoto); grPhoto.SmoothingMode = SmoothingMode.AntiAlias; grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic; grPhoto.PixelOffsetMode = PixelOffsetMode.HighQuality; grPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, targetW, targetH), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel); // Save out to memory and then to a file. We dispose of all objects to make sure the files don't stay locked. MemoryStream mm = new MemoryStream(); bmPhoto.Save(mm, System.Drawing.Imaging.ImageFormat.Jpeg); original.Dispose(); imgPhoto.Dispose(); bmPhoto.Dispose(); grPhoto.Dispose(); return mm.GetBuffer(); } else { return imageFile; }}
这个出来的清晰度很低,原32k 出来时7k左右,清晰度太差~