//
int_Height int_Width 指定高度和指定宽度 input_Imgfile,out_ImgFile为原图片和缩小后图片的路径。
public static void Thumbnail ( int int_Width, int int_Height, string input_ImgFile, string out_ImgFile)
{
System.Drawing.Image oldimage = System.Drawing.Image.FromFile(input_ImgFile);
float New_Width; // 新的宽度
float New_Height; // 新的高度
float Old_Width,Old_Height; // 原始高宽
int flat = 0 ; // 标记图片是不是等比
int xPoint = 0 ; // 若果要补白边的话,原图像所在的x,y坐标。
int yPoint = 0 ;
// 判断图片
Old_Width = ( float )oldimage.Width;
Old_Height = ( float )oldimage.Height;
if ((Old_Width / Old_Height) > (( float )int_Width / ( float )int_Height)) // 当图片太宽的时候
{
New_Height = Old_Height * (( float )int_Width / ( float )Old_Width);
New_Width = ( float )int_Width;
// 此时x坐标不用修改
yPoint = ( int )((( float )int_Height - New_Height) / 2 );
flat = 1 ;
}
else if ((oldimage.Width / oldimage.Height) == (( float )int_Width / ( float )int_Height))
{
New_Width = int_Width;
New_Height = int_Height;
}
else
{
New_Width = ( int )oldimage.Width * (( float )int_Height / ( float )oldimage.Height); // 太高的时候
New_Height = int_Height;
// 此时y坐标不用修改
xPoint = ( int )((( float )int_Width - New_Width) / 2 );
flat = 1 ;
}
// ===缩小图片===
System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(( int )New_Width, ( int )New_Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
Bitmap bm = new Bitmap(thumbnailImage);
if (flat != 0 )
{
Bitmap bmOutput = new Bitmap(int_Width,int_Height);
Graphics gc = Graphics.FromImage(bmOutput);
SolidBrush tbBg = new SolidBrush(Color.White);
gc.FillRectangle(tbBg, 0 , 0 , int_Width, int_Height); // 填充为白色
gc.DrawImage(bm,xPoint, yPoint, ( int )New_Width, ( int )New_Height);
bmOutput.Save(out_ImgFile);
}
else
{
bm.Save(out_ImgFile);
}
}
public static void Thumbnail ( int int_Width, int int_Height, string input_ImgFile, string out_ImgFile)
{
System.Drawing.Image oldimage = System.Drawing.Image.FromFile(input_ImgFile);
float New_Width; // 新的宽度
float New_Height; // 新的高度
float Old_Width,Old_Height; // 原始高宽
int flat = 0 ; // 标记图片是不是等比
int xPoint = 0 ; // 若果要补白边的话,原图像所在的x,y坐标。
int yPoint = 0 ;
// 判断图片
Old_Width = ( float )oldimage.Width;
Old_Height = ( float )oldimage.Height;
if ((Old_Width / Old_Height) > (( float )int_Width / ( float )int_Height)) // 当图片太宽的时候
{
New_Height = Old_Height * (( float )int_Width / ( float )Old_Width);
New_Width = ( float )int_Width;
// 此时x坐标不用修改
yPoint = ( int )((( float )int_Height - New_Height) / 2 );
flat = 1 ;
}
else if ((oldimage.Width / oldimage.Height) == (( float )int_Width / ( float )int_Height))
{
New_Width = int_Width;
New_Height = int_Height;
}
else
{
New_Width = ( int )oldimage.Width * (( float )int_Height / ( float )oldimage.Height); // 太高的时候
New_Height = int_Height;
// 此时y坐标不用修改
xPoint = ( int )((( float )int_Width - New_Width) / 2 );
flat = 1 ;
}
// ===缩小图片===
System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(( int )New_Width, ( int )New_Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
Bitmap bm = new Bitmap(thumbnailImage);
if (flat != 0 )
{
Bitmap bmOutput = new Bitmap(int_Width,int_Height);
Graphics gc = Graphics.FromImage(bmOutput);
SolidBrush tbBg = new SolidBrush(Color.White);
gc.FillRectangle(tbBg, 0 , 0 , int_Width, int_Height); // 填充为白色
gc.DrawImage(bm,xPoint, yPoint, ( int )New_Width, ( int )New_Height);
bmOutput.Save(out_ImgFile);
}
else
{
bm.Save(out_ImgFile);
}
}