如何在上传时压缩照片的高度和宽度[asp.net]

时间:2016-06-16 05:57:15

标签: asp.net

我想在上传期间将上传照片压缩为Height =600px & Width= 800px尺寸[仅当实际尺寸大于此值时]。照片在sql server2008上保存并带有数据类型图像!

 public byte[] imagetoByte()
        {
            if (FileUpload1.HasFile)
            {
                int imageFilelength = FileUpload1.PostedFile.ContentLength;
                byte[] ph = new byte[imageFilelength];
                HttpPostedFile ima = FileUpload1.PostedFile;
                MemoryStream memoryStream = new MemoryStream();
                ima.InputStream.Read(ph, 0, imageFilelength);
                return ph;
            }
            else
            {
                return null;
            }

         }

功能用于图片上传!!有人帮我解决这个问题..

1 个答案:

答案 0 :(得分:0)

可能的解决方案可以是:

int imageFilelength = FileUpload1.PostedFile.ContentLength;
byte[] ph = new byte[imageFilelength];

MemoryStream ms = new MemoryStream(ph);
Image img = System.Drawing.Image.FromStream(ms);

//Call function to resize 
Image ResizedImage = RezizeImage(img, 500, 500);

//Save Image
ResizedImage.Save("IMAGELOCATION.png", System.Drawing.Imaging.ImageFormat.Gif);
private Image RezizeImage(Image img, int maxWidth, int maxHeight)
{
    if(img.Height < maxHeight && img.Width < maxWidth) return img;
    using (img)
    {
        Double xRatio = (double)img.Width / maxWidth;
        Double yRatio = (double)img.Height / maxHeight;
        Double ratio = Math.Max(xRatio, yRatio);
        int nnx = (int)Math.Floor(img.Width / ratio);
        int nny = (int)Math.Floor(img.Height / ratio);
        Bitmap cpy = new Bitmap(nnx, nny, PixelFormat.Format32bppArgb);
        using (Graphics gr = Graphics.FromImage(cpy))
        {
            gr.Clear(Color.Transparent);

            // This is said to give best quality when resizing images
            gr.InterpolationMode = InterpolationMode.HighQualityBicubic;

            gr.DrawImage(img,
                new Rectangle(0, 0, nnx, nny),
                new Rectangle(0, 0, img.Width, img.Height),
                GraphicsUnit.Pixel);
        }
        return cpy;
    }

}