using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
namespace com.ooit.edu {
public static class GraphicsResize
{
private
delegate void Logger(object
obj);
public static void
Logger
log = Console.WriteLine;
log("START");
// INPUT
List<string> files = new
List<string>();
files.AddRange(Directory.GetFiles(@"c:\myimages",
"*.jpg"));
files.AddRange(Directory.GetFiles(@"c:\myimages",
"*.gif"));
files.AddRange(Directory.GetFiles(@"c:\myimages",
"*.png"));
//OUTPUT
string
outputDir = @"c:\resized-images";
foreach
(string file in
files) {
Image
image = Image.FromFile(file);
Image
resizedImage = ResizeImageToWidth(image, 220, 165);
string
outputFileName =
Path.Combine(outputDir,
Path.GetFileName(file));
SaveImage(outputFileName,
resizedImage);
}
log("DONE");
}
public static Image ResizeImageToWidth(Image image,
int
width, int maxHeight) {
int
sourceWidth = image.Width;
int
sourceHeight = image.Height;
int
height = width * sourceHeight / sourceWidth;
if
(height > maxHeight) {
width = maxHeight * sourceWidth
/ sourceHeight;
height = width * sourceHeight /
sourceWidth;
}
Bitmap
resizedImage = new Bitmap(width,
height,
PixelFormat.Format32bppRgb);
resizedImage.SetResolution(image.HorizontalResolution,
image.VerticalResolution);
Graphics
grPhoto = Graphics.FromImage(resizedImage);
grPhoto.Clear(Color.Transparent);
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
grPhoto.DrawImage(image,
new
Rectangle(0, 0, width, height),
new
Rectangle(0, 0, sourceWidth, sourceHeight),
GraphicsUnit.Pixel);
grPhoto.Dispose();
return
resizedImage;
}
public static void SaveImage(string fileName, Image
image) {
ImageCodecInfo
jpeg = null;
ImageCodecInfo
png = null;
ImageCodecInfo
gif = null;
ImageCodecInfo[]
encoders = ImageCodecInfo.GetImageEncoders();
foreach
(ImageCodecInfo encoder in encoders) {
jpeg =
encoder.FormatDescription.Equals("JPEG")
? encoder : jpeg;
png =
encoder.FormatDescription.Equals("PNG")
? encoder : png;
gif =
encoder.FormatDescription.Equals("GIF")
? encoder : gif;
}
EncoderParameters
encoderParameters = new EncoderParameters();
encoderParameters.Param[0] =
new
EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L);
if
(fileName.ToUpper().EndsWith("JPG")
||
fileName.ToUpper().EndsWith("JPEG")) {
image.Save(fileName, jpeg,
encoderParameters);
} else
if (fileName.ToUpper().EndsWith("PNG")) {
image.Save(fileName, png,
encoderParameters);
} else
if (fileName.ToUpper().EndsWith("GIF")) {
image.Save(fileName, gif,
encoderParameters);
} else
{
image.Save(fileName);
}
}
}
}

