图像缩略图ASP.NET [英] Image Thumbnails ASP.NET

查看:125
本文介绍了图像缩略图ASP.NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想,我目前使用从网站根目录下保存一个文件夹中的图像文件的缩略图内置在.NET capebilites动态生成缩略图,但质量得到相当糟糕,并因为它的一个网店多数民众赞成以genererate一个现实的问题,我的问题是,如果有什么好的(开源?)的框架,可以帮助我hanlde上传过程中图像的缩略图创建和rezise和可能的帮助以图像文件的大小COM pression?

I'm trying to genererate thumbnails from image files stored in a folder under the website root, I am currently using the built in capebilites in .NET to dynamically generate the thumbnails but the quality gets quite bad and since its an webshop thats a real problem my question is if there is any good (open source?) frameworks that can help me hanlde the image thumbnail creation and rezise and possible help with image file size compression during upload?

我看了,但还没有发现任何没有?

I've looked but havent found any yet?

先谢谢了。

推荐答案

我已经写了一些code你可以使用。请不要卖掉它;)

I've written some code you could use. Please don't sell it ;)

这是code:

/*
 *  Software Developed by Filip Ekberg ( Filip@SmartIT.se )
 * 
 *  For Questions regarding this software, please send me an E-mail
 * 
 */

#region Usings
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
#endregion

namespace ImageResizer
{
    class ImageProcessor
    {
        #region Members
        private int m_imgWidht,
                    m_imgHeight,
                    m_oImgWidht,
                    m_oImgHeight;

        private float m_vertRes,
                      m_horiRes;

        private double m_size = 0.25;

        private Bitmap m_Bitmap;
        private Graphics m_Graphics;
        private Image m_currentImage;

        private PixelFormat m_pxlFormat = PixelFormat.Format32bppRgb;
        private InterpolationMode m_interpolationMode = InterpolationMode.HighQualityBilinear;
        private CompositingQuality m_compositingQuality = CompositingQuality.HighQuality;
        private SmoothingMode m_smoothingMode = SmoothingMode.None;
        #endregion

        #region Access Methods

        public int ImageWidth 
        {
            get { return m_imgWidht; }
        }
        public int ImageHeight 
       {
            get { return m_imgHeight; }
        }
        public float VerticalResolution
        {
            get { return m_vertRes; }
            set { m_vertRes = value; }
        }
        public float HorizonalResolution
        {
            get { return m_horiRes; }
            set { m_horiRes = value; }
        }

        /// <summary>
        /// Use ImageSize struct for setting this.
        /// </summary>
        public double Size
        {
            get { return m_size; }
            set { m_size = value; }
        }
        public Image ProcessImage
        {
            get { return m_currentImage; }
            set { m_currentImage = value; }
        }
        public PixelFormat ImagePixelFormat 
        {
            get { return m_pxlFormat; }
            set { m_pxlFormat = value; }
        }
        public InterpolationMode ImageInterpolationMode
        {
            get { return m_interpolationMode; }
            set { m_interpolationMode = value; }
        }
        public CompositingQuality ImageCompositingQuality
        {
            get { return m_compositingQuality; }
            set { m_compositingQuality = value; }
        }
        public SmoothingMode ImageSmoothingMode
        {
            get { return m_smoothingMode; }
            set { m_smoothingMode = value; }
        }

        #endregion

        #region Process Image
        public Bitmap BeginProcess()
        {
            if ( m_currentImage == null )
                return null;

            m_oImgWidht = m_currentImage.Width;
            m_oImgHeight = m_currentImage.Height;

            m_vertRes = m_currentImage.VerticalResolution;
            m_horiRes = m_currentImage.HorizontalResolution;

            m_imgWidht = (int)(m_oImgWidht * (double)m_size);
            m_imgHeight = (int)(m_oImgHeight * (double)m_size);


            m_Bitmap = new Bitmap(m_imgWidht, m_imgHeight, m_pxlFormat);

            m_Bitmap.SetResolution(m_vertRes, m_horiRes);

            m_Graphics = Graphics.FromImage(m_Bitmap);

            m_Graphics.InterpolationMode = m_interpolationMode;

            m_Graphics.CompositingQuality = m_compositingQuality;

            m_Graphics.SmoothingMode = m_smoothingMode;

            // m_Graphics.DrawImage(m_currentImage, new Rectangle(0, 0, m_imgWidht, m_imgHeight), new Rectangle(0, 0, m_oImgWidht, m_oImgHeight), GraphicsUnit.Pixel);

            Rectangle rectDestination = new Rectangle(0, 0, m_imgWidht, m_imgHeight);
           // m_Graphics.DrawImage(m_currentImage,
           //     new Rectangle(-1, -1, m_oImgWidht + 2, m_oImgHeight + 2),
            //    new Rectangle(m_oImgWidht, m_oImgHeight, m_imgWidht, m_oImgHeight),
            //    GraphicsUnit.Pixel);
            ImageAttributes ia = new ImageAttributes();
            ia.SetWrapMode(WrapMode.TileFlipXY);
            m_Graphics.DrawImage(m_currentImage, rectDestination, 0, 0, m_oImgWidht, m_oImgHeight, GraphicsUnit.Pixel, ia); 

            // m_Graphics.Dispose();

            return m_Bitmap;
        }
        #endregion
    }
}

这是如何使用它:

private ImageProcessor m_processor = new ImageProcessor();


m_currentImage = new Bitmap(currentFile.FullName);

                // Display a Thumbnail of it
                pictureBox1.Image = m_currentImage.GetThumbnailImage(pictureBox1.Width, pictureBox1.Height, null, IntPtr.Zero);

                // Update the Label with Filename and what file is currently processed
                delegate_lblControl(currentFile.Name + "\n" + m_currentProcessedImage + " / " + m_fileList.Length);

                // Increase the value on the ProcessBar
                delegate_imageProcessValue(1);

                // Process the Image
                m_processor.ProcessImage = m_currentImage;

                m_processor.Size = m_size;

                m_finalProcessedImage = m_processor.BeginProcess();

                ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
                System.Drawing.Imaging.Encoder myEncoder =
                    System.Drawing.Imaging.Encoder.Quality;

                EncoderParameters myEncoderParameters = new EncoderParameters(1);
                EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, m_jpegQuality);
                myEncoderParameters.Param[0] = myEncoderParameter;


                // Save the Image to the Output folder
                m_finalProcessedImage.Save(fldOutput.SelectedPath + "\\" + currentFile.Name, jgpEncoder, myEncoderParameters);

                // Dispose the Images
                m_finalProcessedImage.Dispose();

                m_currentImage.Dispose();

什么是code其实我已经写能做的就是调整图片到一个特定的百分比。

What the code i've written actually can do is resize your images to a specific percentage.

这篇关于图像缩略图ASP.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆