نحوه فشرده سازی تصاویر در Asp.Net
0 0

نحوه فشرده سازی تصاویر در Asp.Net


نحوه فشرده سازی تصاویر در Asp.Net

در این آموزش الگوریتمی معرفی می کنیم که با استفاده از این الگوریتم می توانید تصاویری با حجم 10 مگابایت و یا بیشتر را به 1 یا 2 مگابایت تبدیل کنید که هیچ افت کیفیتی در تصاویر فشرده سازی شده  نداشته باشید.

تصاویری که با استفاده از دوربین های دیجیتال گرفته اید معمولا حجم آن ها بیش از 10 مگابایت می باشند. در صورتی که بخواهید آنها را به دوستان خود از اینترنت ارسال کنید زمانی زیادی طول می کشد ولی به استفاده از این الگوریتم می توانید این مشکل را حال کنید و حجم تصاویر خود را به راحتی بدون افت کیفیت کاهش دهید.

ابتدا یک صفحه Default.aspx ایجاد کنید و کدهای آن را به شکل زیر تفییر دهید.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>ایران گنج</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true" />
            <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" />
        </div>
    </form>
</body>
</html>

قسمت کدهای سی شارپ آن به صورت زیر می باشد.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    private ImageCodecInfo GetEncoder(ImageFormat format)
    {
        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

        foreach (ImageCodecInfo codec in codecs)
        {
            if (codec.FormatID == format.Guid)
            {
                return codec;
            }
        }
        return null;
    }
    public bool ThumbnailCallback()
    {
        return false;
    }

    protected void btnUpload_Click(object sender, EventArgs e)
    {
        string strCurentDate = DateTime.Now.Date.ToShortDateString();
        string today_date = DateTime.Now.Date.ToShortDateString();
        string strNewNumberDate = strCurentDate.Replace("/", "-");

        Random random = new Random();

        int totalnumber = 0;
        int intnumberrandoma = random.Next(1, 100);
        string eventnumber = strNewNumberDate + intnumberrandoma.ToString();
        string target = Server.MapPath("~/clients/PhotoImage/thumb/");
        System.Drawing.Image.GetThumbnailImageAbort thumbnailImageAbortDelegate = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);

        foreach (HttpPostedFile postedFile in FileUpload1.PostedFiles)
        {
            string contentType = postedFile.ContentType;
            using (Stream fs = postedFile.InputStream)
            {
                using (BinaryReader br = new BinaryReader(fs))
                {
                    string path = Server.MapPath("~/clients/PhotoImage/Image/");

                    int intnumberrandom = random.Next(20, 99999);
                    string filename = string.Format("{0}_{1}{2}_{3}{4}", strNewNumberDate, User.Identity.Name, intnumberrandom.ToString(), totalnumber.ToString(), ".jpg");
                    string thumb = string.Format("{0}_{1}{2}_thumb{3}{4}", strNewNumberDate, User.Identity.Name, intnumberrandom.ToString(), totalnumber.ToString(), ".jpg");

                    // Get a bitmap.
                    string pathbmpresult = string.Format("{0}{1}", path, filename);
                    string pathbmp = string.Format("@{0}", pathbmpresult);
                    string filename2 = Path.GetFileName(postedFile.FileName);
                    string contentType2 = postedFile.ContentType;

                    using (Bitmap originalImage = new Bitmap(postedFile.InputStream))
                    {
                        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, 40L);
                        myEncoderParameters.Param[0] = myEncoderParameter;
                        originalImage.Save(pathbmpresult, jgpEncoder, myEncoderParameters);
                    }
                }
            }
        }
    }
}

به صورت پیش فرض تا 4 مگابایت می توانید در Asp.Net تصاویر یا فایل آپلود کنید برای این که بتوانید تصاویر یا فایل های با حجم 20 مگابایت یا بیشتر در Asp.Net آپلود کنید باید تغییراتی در web.config انجام دهید که به صورت زیر می باشد.

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime maxRequestLength="50176" targetFramework="4.5"/>
    </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="51380224"/>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

دانلود

نویسنده حسین فتحی
گروه مطلب Asp.Net
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۴ بهمن ۱۳۹۳
منبع ایران گنج
تعداد نظرات ۰
قیمت کاربران VIP
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.
خرید VIP
امکان خرید از درگاه های بانکی و حساب مجازی

برای دانلود بعد از خرید به همین صفحه برگردید تا لینک های دانلود نمایش داده شود

نظر / سوال

Captcha