做一个按比例压缩图像的方法

此方法为网上抄袭而来,并非本人原创。

public   static   void  ResizeImageFile( string  pathFilename,  byte [] imageFile,  int  targetSize)
    
{
        
using (System.Drawing.Image oldImage = System.Drawing.Image.FromStream(new MemoryStream(imageFile)))
        
{
            Size newSize 
= CalculateDimensions(oldImage.Size, targetSize);
            
using (Bitmap newImage = new Bitmap(newSize.Width, newSize.Height, PixelFormat.Format24bppRgb))
            
{
                
using (Graphics canvas = Graphics.FromImage(newImage))
                
{
                    canvas.SmoothingMode 
= SmoothingMode.AntiAlias;
                    canvas.InterpolationMode 
= InterpolationMode.HighQualityBicubic;
                    canvas.PixelOffsetMode 
= PixelOffsetMode.HighQuality;

                    canvas.DrawImage(oldImage, 
new Rectangle(new Point(00), newSize));

                    
if (newSize.Width >= 400)
                    
{
                        canvas.TextRenderingHint 
= TextRenderingHint.AntiAlias;
                        
string imageCopyright = ConfigurationManager.AppSettings["ImageCopyright"].ToString();
                        Font font 
= new Font("Verdana"10);
                        SolidBrush solidBrushBlack 
= new SolidBrush(Color.Black);
                        SolidBrush solidBrushWhite 
= new SolidBrush(Color.White);
                        
//左上角
                        canvas.DrawString(imageCopyright, font, solidBrushBlack, 55);
                        canvas.DrawString(imageCopyright, font, solidBrushWhite, 
66);
                        
//右下角
                        SizeF sizeF = new SizeF();
                        sizeF 
= canvas.MeasureString(imageCopyright, font);
                        canvas.DrawString(imageCopyright, font, solidBrushWhite, newSize.Width 
- sizeF.Width - 5, newSize.Height - sizeF.Height);
                        canvas.DrawString(imageCopyright, font, solidBrushBlack, newSize.Width 
- sizeF.Width - 6, newSize.Height - sizeF.Height);
                    }


                    newImage.Save(pathFilename, ImageFormat.Jpeg);
                }

            }

        }

    }


    
private   static  Size CalculateDimensions(Size oldSize,  int  targetSize)
    
{
        Size newSize 
= new Size();
        
if (oldSize.Height > oldSize.Width)
        
{
            
if (oldSize.Height < targetSize)
            
{
                newSize.Width 
= oldSize.Width;
                newSize.Height 
= oldSize.Height;
            }

            
else
            
{
                newSize.Width 
= (int)(oldSize.Width * ((float)targetSize / (float)oldSize.Height) * 0.75);
                newSize.Height 
= (int)(targetSize * 0.75);
            }

        }

        
else
        
{
            
if (oldSize.Width < targetSize)
            
{
                newSize.Width 
= oldSize.Width;
                newSize.Height 
= oldSize.Height;
            }

            
else
            
{
                newSize.Width 
= targetSize;
                newSize.Height 
= (int)(oldSize.Height * ((float)targetSize / (float)oldSize.Width));
            }

        }

        
return newSize;
    }


               

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值