Tuesday 25 June 2013

ImageButtons not working in IE10

<script language="javascript" type="text/javascript">
function x()
{

if (typeof (Sys) !== 'undefined' && Sys.Browser.agent === Sys.Browser.InternetExplorer && Sys.Browser.version === 10) {
         Sys.WebForms.PageRequestManager.getInstance()._onFormElementActive = function Sys$WebForms$PageRequestManager$_onFormElementActive(element, offsetX, offsetY) {
             if (element.disabled) { return; }
             this._activeElement = element;
             this._postBackSettings = this._getPostBackSettings(element, element.name);
             if (element.name) {
                 var tagName = element.tagName.toUpperCase();
                 if (tagName === 'INPUT') {
                     var type = element.type;
                     if (type === 'submit') {
                         this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
                     }
                     else if (type === 'image') {
                         this._additionalInput = encodeURIComponent(element.name) + '.x=' + Math.floor(offsetX) + '&' + encodeURIComponent(element.name) + '.y=' + Math.floor(offsetY);
                     }
                 }
                 else if ((tagName === 'BUTTON') && (element.name.length !== 0) && (element.type === 'submit')) {
                     this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
                 }
             }
         };
     }
}
</script>

IE10 sending image button click coordinates with decimals (floating point values) causing a ParseInt32 FormatException

  <script language="javascript" type="text/javascript">
function x()
{
            // Patch fractional .x, .y form parameters for IE10.
            if (typeof (Sys) !== 'undefined' && Sys.Browser.agent === Sys.Browser.InternetExplorer && Sys.Browser.version === 10) {
                Sys.WebForms.PageRequestManager.getInstance()._onFormElementActive = function Sys$WebForms$PageRequestManager$_onFormElementActive(element, offsetX, offsetY) {
                    if (element.disabled) {
                        return;
                    }
                    this._activeElement = element;
                    this._postBackSettings = this._getPostBackSettings(element, element.name);
                    if (element.name) {
                        var tagName = element.tagName.toUpperCase();
                        if (tagName === 'INPUT') {
                            var type = element.type;
                            if (type === 'submit') {
                                this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
                            }
                            else if (type === 'image') {
                                this._additionalInput = encodeURIComponent(element.name) + '.x=' + Math.floor(offsetX) + '&' + encodeURIComponent(element.name) + '.y=' + Math.floor(offsetY);
                            }
                        }
                        else if ((tagName === 'BUTTON') && (element.name.length !== 0) && (element.type === 'submit')) {
                            this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
                        }
                    }
                };
            }
</script>

Sunday 16 June 2013

how to create video thumbnail in asp.net

Press Me

Press Me 
solution explore looks like:
webconfig:
<system.web>
    <httpRuntime executionTimeout="110" maxRequestLength="50000" requestLengthDiskThreshold="80" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="5000" enableKernelOutputCache="true" enableVersionHeader="true" requireRootedSaveAsPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0" maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false"/>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>
  </system.web>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table align="center">
        <tr><td colspan="2"><asp:Label ID="lb" runat="server"></asp:Label></td></tr>
            <tr>
                <td>
                    <asp:FileUpload ID="FileUpload1" runat="server" />
                </td>
                <td>
                    <asp:Button ID="btn" runat="server" Text="Upload" OnClick="btn_Click" />
                </td>
            </tr>
            <tr><td>
             <asp:PlaceHolder ID="plh" runat="server"></asp:PlaceHolder>
            </td></tr>
            <tr>
                <td colspan="2">
                <asp:DataList ID="dl" runat="server" Width="100%">
                <ItemTemplate>
                <asp:ImageButton ID="im" runat="server" Height="50" Width="50"
                        ImageUrl='<%#"~/Video/Thumb/"+Eval("IMAGE") %>'
                        CommandArgument='<%#Eval("ID") %>' oncommand="im_Command" />
                </ItemTemplate>
                </asp:DataList>
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>
c# code :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Diagnostics;

public partial class _Default : System.Web.UI.Page
{
    #region
    string postedfilename, SavePath, Filenamewithpath;
    DataClassesDataContext obj = new DataClassesDataContext();
    #endregion
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            fill();
    }
    void fill()
    {
        dl.DataSource = obj.EMPs.Select(b => new {b.IMAGE,b.ID});
        dl.DataBind();
        dl.RepeatColumns = obj.EMPs.ToList().Count;
    }
    protected void btn_Click(object sender, EventArgs e)
    {
        postedfilename = FileUpload1.PostedFile.FileName;
        SavePath = AppDomain.CurrentDomain.BaseDirectory + "Video\\";
        string NewFName = postedfilename;
        NewFName = NewFName.Substring(NewFName.LastIndexOf("\\") + 1, NewFName.Length - NewFName.LastIndexOf(".")) + "." + NewFName.Substring(NewFName.LastIndexOf(".") + 1);
        Filenamewithpath = SavePath + NewFName;

        //Save The file
        FileUpload1.PostedFile.SaveAs(Filenamewithpath);

        //Start Converting
        string inputfile, outputfile, filargs;
        string withoutext;

        //Get the file name without Extension
        withoutext = Path.GetFileNameWithoutExtension(Filenamewithpath);

        //Input file path of uploaded image
        inputfile = SavePath + NewFName;

        //output file format in swf
        outputfile = SavePath + "SWF\\" + withoutext + ".swf";
        ViewState["vedio"] = withoutext + ".swf";
        //file orguments for FFMEPG
        filargs = "-i " + inputfile + " -ar 22050 " + outputfile;

        string spath;
        spath = Server.MapPath(".");
        Process proc;
        proc = new Process();
        proc.StartInfo.FileName = spath + "\\ffmpeg\\ffmpeg.exe";
        proc.StartInfo.Arguments = filargs;
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.CreateNoWindow = false;
        proc.StartInfo.RedirectStandardOutput = false;
        try
        {

            proc.Start();

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        proc.WaitForExit();
        proc.Close();




        //Create Thumbs

        string thumbpath, thumbname;
        string thumbargs;
        string thumbre;
        thumbpath = AppDomain.CurrentDomain.BaseDirectory + "\\Video\\Thumb\\";
        thumbname = thumbpath + withoutext + "%d" + ".jpg";
        ViewState["image"] = withoutext + "1" + ".jpg";
        thumbargs = "-i " + inputfile + " -vframes 1 -ss 00:00:07 -s 150x150 " + thumbname;
        Process thumbproc = new Process();
        thumbproc = new Process();
        thumbproc.StartInfo.FileName = spath + "\\ffmpeg\\ffmpeg.exe";
        thumbproc.StartInfo.Arguments = thumbargs;
        thumbproc.StartInfo.UseShellExecute = false;
        thumbproc.StartInfo.CreateNoWindow = false;
        thumbproc.StartInfo.RedirectStandardOutput = false;
        try
        {

            thumbproc.Start();

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        thumbproc.WaitForExit();
        thumbproc.Close();
        File.Delete(inputfile);
        EMP o = new EMP();
        o.IMAGE = ViewState["image"].ToString();
        o.VEDIO = ViewState["vedio"].ToString();
        obj.EMPs.InsertOnSubmit(o);
        obj.SubmitChanges();
        fill();
        lb.Text = "Data Save sucessfully.";
    }
    protected void im_Command(object sender, CommandEventArgs e)
    {
        string vfname = obj.EMPs.Where(b => b.ID == Convert.ToInt32(e.CommandArgument.ToString())).Select(b => new { b.VEDIO }).ToList()[0].VEDIO.ToString();
        string plyr = "<embed src='Players/flvplayer.swf' width='425' height='355' bgcolor='#FFFFFF' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' flashvars='file=Video/SWF/" + vfname + "&autostart=false&frontcolor=0xCCCCCC&backcolor=0x000000&lightcolor=0x996600&showdownload=false&showeq=false&repeat=false&volume=100&useaudio=false&usecaptions=false&usefullscreen=true&usekeys=true'></embed>";
        plh.Controls.Add(new LiteralControl(plyr));
    }
}
 page looks like:

press me

Thursday 13 June 2013

how to create checkbox single selection in grideveiw using jquery in asp.net

 <asp:TemplateField HeaderText="Default">
                                    <ItemTemplate>
                                    <asp:CheckBox id="cbdefault" runat="server" Checked='<%#Eval("Default") %>' onclick="check(this)" />
                                    </ItemTemplate>
                                </asp:TemplateField>

script
 <script language="javascript" type="text/javascript">
function check(source) {
        var isChecked = source.checked;
        var ids = {
            grid: "<%= gvdetails.ClientID %>"
        }
        $("#" + ids.grid + " input[id*='cbdefault']").each(function (index) {
            $(this).attr('checked', false);
        });
        source.checked = isChecked;
    }
  </script>

Monday 3 June 2013

how to find dimension and size of a image in asp.net

<%@ Page Title="" Language="C#" MasterPageFile="~/ERP/ECOMMERCE/GLIZMORE/GlizmoreMaster.Master"
    AutoEventWireup="true" CodeBehind="GlizmoreImageDownload.aspx.cs" Inherits="Website.ERP.ECOMMERCE.GLIZMORE.GlizmoreImageDownload" %>
   
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <script language="javascript" type="text/javascript">
        $(document).ready(
function () {
    $('#<%=btnAdd.ClientID %>').click(
function () {
    if ($('#<%=txttitle.ClientID %>').val() == "") {
        alert('Title should n\'t blank.');
        $('#<%=txttitle.ClientID %>').focus();
        return false;
    }
    else if ($('#<%=fuimage.ClientID %>').val() == "") {
        alert('Image should n\'t blank.');
        $('#<%=fuimage.ClientID %>').focus();
        return false;
    }
    return true;
}
)
  

}
)

</script>

    <div>
        <div id="inneroutercontent">
            <div>
                <table border="0" width="585" align="center">
                    <tr>
                        <td align="right">
                            <p>
                                Title :</p>
                        </td>
                        <td>
                            <asp:TextBox ID="txttitle" runat="server" Width="300"></asp:TextBox>&nbsp;<asp:LinkButton
                                ID="lkbView" runat="server" Font-Underline="false" Text="View"
                                onclick="lkbView_Click"></asp:LinkButton>
                        </td>
                    </tr>
                    <tr>
                        <td align="right">
                            <p>
                                Image :</p>
                        </td>
                        <td>
                            <asp:FileUpload ID="fuimage" runat="server" Style="width: 304px" />
                        </td>
                    </tr>
                    <tr>
                        <td align="right" style="vertical-align:top">
                            <p>
                                Description :
                            </p>
                        </td>
                        <td>
                            <asp:TextBox ID="txtdescription" runat="server" Width="298" TextMode="MultiLine"></asp:TextBox>&nbsp;
                            <asp:Button ID="btnAdd" runat="server" Text="Add More" Width="80" OnClick="btnAdd_Click" /></li>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;
                        </td>
                        <td>
                            <asp:GridView ID="gvtemp" runat="server" Width="100%"
                                AutoGenerateColumns="False" onrowdeleting="gvtemp_RowDeleting">
                             
                                <Columns>
                                    <asp:TemplateField HeaderText="Sl No.">
                                        <ItemTemplate>
                                            <%#Container.DisplayIndex+1 %>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="TITLE">
                                    <ItemTemplate>
                                    <asp:Label ID="lbtitle" runat="server" Text='<%#Eval("Image_Title") %>'></asp:Label>
                                    </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="IMAGE">
                                    <ItemTemplate>
                                      <asp:HiddenField ID="hfdesp" runat="server" Value='<%#Eval("Description") %>' />
                                    <asp:HiddenField ID="hfimage" runat="server" Value='<%#Eval("Image_Path") %>' />
                                    <asp:HiddenField ID="hfsize" runat="server" Value='<%#Eval("Size") %>' />
                                     <asp:HiddenField ID="hfDimention" runat="server" Value='<%#Eval("Dimension") %>' />
                                    <asp:Image Height="80" Width="80" runat="server" ID="imgimage1" ImageUrl='<%#"~/images/"+Eval("Image_Path") %>' />
                                    </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:CommandField HeaderText="REMOVE" ShowDeleteButton="True"
                                        ShowHeader="True" />
                                </Columns>
                               <HeaderStyle HorizontalAlign="Left" />
                               <RowStyle HorizontalAlign="Center" />
                            </asp:GridView>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;
                        </td>
                        <td>
                            <asp:Button ID="btnSave" runat="server" Text="Save" Width="80" OnClick="btnSave_Click"  />&nbsp;<asp:Button
                                ID="btnReset" runat="server" Text="Reset" Width="80" />
                        </td>
                    </tr>
                </table>

                <asp:Panel ID="pnlModal" runat="server" Width="800px" CssClass="ModalPopUpPanelCommonViewCRM"   Style="display: none">
                    <table width="100%" cellspacing="0" cellpadding="0">
                    <tr><td>
                      <div align="right" style="background-color: #7DA5DB; height: 30px" class="grid_top">
                        <asp:Button ID="btnClose" runat="server" Width="25" Text="X" CssClass="PoPUpCloseBtnCRM" CausesValidation="False"
                            ToolTip="Close" />
                    </div>
                     <asp:Button ID="btnview" runat="server" Text="Press" style="display:none" />
                    <div  class="grid">
                        <asp:GridView ID="gvimage" runat="server" Width="99%">
                        <Columns>
                        <asp:TemplateField HeaderText="Sl NO.">
                        <ItemTemplate>
                        <%#Container.DisplayIndex+1 %>
                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField  HeaderText="TITLE">
                        <ItemTemplate>
                        <asp:Label ID="lbtitle" runat="server" Text='<%#Eval("Image_Title") %>'></asp:Label>
                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="IMAGE">
                        <ItemTemplate>
                         <asp:HiddenField ID="hfimgid" runat="server" Value='<%#Eval("Image_ID") %>' />
                         <asp:HiddenField ID="hfdesp" runat="server" Value='<%#Eval("Description") %>' />
                                    <asp:HiddenField ID="hfimage" runat="server" Value='<%#Eval("Image_Path") %>' />
                                    <asp:HiddenField ID="hfsize" runat="server" Value='<%#Eval("Size") %>' />
                                     <asp:HiddenField ID="hfDimention" runat="server" Value='<%#Eval("Dimension") %>' />
                        <asp:Image ID="im" runat="server" Height="80" Width="80" ImageUrl='<%#"~/images/"+Eval("Image_Path") %>' />
                        </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="STATUS">
                        <ItemTemplate>
                        <asp:CheckBox ID="cb" runat="server" Checked='<%#Eval("Status") %>' />
                        </ItemTemplate>
                        </asp:TemplateField>
                        </Columns>
                        </asp:GridView>
                    </div>
                    </td></tr>
                    <tr  class="grid1"><td><asp:Button ID="btnmodify" runat="server" Text="Change"
                            Width="80" style="position:relative; left:380px; top:5px"
                            onclick="btnmodify_Click" /></td></tr>
          
                    </table>
                 
                </asp:Panel>
             
              
                <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnview"
                    PopupControlID="pnlModal" CancelControlID="btnClose" BackgroundCssClass="ModalBackgroundCSS">
                </asp:ModalPopupExtender>
            </div>
            <div id="rightcontact">
            </div>
            <div style="clear: both;">
            </div>
        </div>
    </div>
</asp:Content>
C# CODE :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Swash.BusinessLayer;
using Swash.Objects;

namespace Website.ERP.ECOMMERCE.GLIZMORE
{
    public partial class GlizmoreImageDownload : System.Web.UI.Page
    {
        #region
        DataTable dt = new DataTable();
        int i;
        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {
         
            if (!IsPostBack)
            {
                fill();
            }

        }
        void fill()
        {
            gvimage.DataSource = ERPManagement.GetInstance.selectDImage();
            gvimage.DataBind();
        }
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            if (fuimage.HasFile)
            {
                System.Drawing.Image img = System.Drawing.Image.FromFile(fuimage.PostedFile.FileName);
                fuimage.SaveAs(Server.MapPath("~/images/" + fuimage.FileName));
                List<Ecom_Downloadimage> obj = new List<Ecom_Downloadimage>();
                Ecom_Downloadimage obj1 = new Ecom_Downloadimage();
                obj1.Image_Title = txttitle.Text;
                obj1.Image_Path = fuimage.FileName.ToString();
                obj1.Description = txtdescription.Text;
                obj1.Size = (fuimage.PostedFile.ContentLength / 1024).ToString() +" KB";
                obj1.Dimension = img.Height.ToString() + "X" + img.Width.ToString()+" Pixel";
                obj.Add(obj1);
                txttitle.Text = "";
                txtdescription.Text = "";
                txttitle.Focus();
                for (i = 0; i < gvtemp.Rows.Count; i++)
                {
                    Ecom_Downloadimage obj2 = new Ecom_Downloadimage();
                    obj2.Image_Title = ((Label)gvtemp.Rows[i].Cells[1].FindControl("lbtitle")).Text;
                    obj2.Image_Path = ((HiddenField)gvtemp.Rows[i].Cells[2].FindControl("hfimage")).Value.ToString();
                    obj2.Description = ((HiddenField)gvtemp.Rows[i].Cells[2].FindControl("hfdesp")).Value.ToString();
                    obj2.Size = ((HiddenField)gvtemp.Rows[i].Cells[2].FindControl("hfsize")).Value.ToString();
                    obj2.Dimension = ((HiddenField)gvtemp.Rows[i].Cells[2].FindControl("hfDimention")).Value.ToString();
                    obj.Add(obj2);
                }
                ViewState["list"] = obj;
                gvtemp.DataSource = obj.ToList();
                gvtemp.DataBind();

            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (ViewState["list"]!=null)
                {
                    ERPManagement.GetInstance.insertDImage(((List<Ecom_Downloadimage>)ViewState["list"]));
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "x", "result()", true);
                }
                else
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "x", "alert('Add item first.')", true);

            }
            catch (Exception ex)
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "x", "alert('" + ex.Message.ToString() + "')", true);
            }
        }

        protected void lkbView_Click(object sender, EventArgs e)
        {
            fill();
            ModalPopupExtender1.Show();
        }

        protected void btnmodify_Click(object sender, EventArgs e)
        {
            try
            {
                List<Ecom_Downloadimage> obj = new List<Ecom_Downloadimage>();
                for (int i = 0; i < gvimage.Rows.Count; i++)
                {
                    Ecom_Downloadimage obj1 = new Ecom_Downloadimage();
                    obj1.Image_ID = Convert.ToInt32(((HiddenField)gvimage.Rows[i].FindControl("hfimgid")).Value);
                    if (((CheckBox)gvimage.Rows[i].FindControl("cb")).Checked)
                        obj1.Status = true;
                    else
                        obj1.Status = false;
                    obj.Add(obj1);
                }
                ERPManagement.GetInstance.updateDImage(obj);
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "x", "alert('Data changed sucessfully.')", true);
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "x", "alert('"+ex.Message.ToString()+"')", true);
            }

           
        }

        protected void gvtemp_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            List<Ecom_Downloadimage> lis=(List<Ecom_Downloadimage>)ViewState["list"];
            lis.RemoveAt(e.RowIndex);
            ViewState["list"] = lis;
            gvtemp.DataSource = lis;
            gvtemp.DataBind();
        }
    }
}

Create Thumbnail Image in asp.net

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

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
    <div>
    <asp:FileUpload ID="fileupload1" runat="server" /><br />
    <asp:Button ID="btn" runat="server" Text="Save" Width="80" onclick="btn_Click" />
    </div>
    </form>
</body>
</html>
c# code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btn_Click(object sender, EventArgs e)
    {
        string filename = Path.GetFileName(fileupload1.PostedFile.FileName);
        string targetPath = Server.MapPath("~/image/" +"small"+ filename);
        Stream strm = fileupload1.PostedFile.InputStream;
        var targetFile = targetPath;
        ConvertThumbnails(0.07, strm, targetFile);
    }
    private void ConvertThumbnails(double scaleFactor, Stream sourcePath, string targetPath)
    {
       
            var image = System.Drawing.Image.FromStream(sourcePath);
            var newWidth = (int)(image.Width * scaleFactor);
            var newHeight = (int)(image.Height * scaleFactor);
            var thumbnailImg = new Bitmap(newWidth, newHeight);
            var thumbGraph = Graphics.FromImage(thumbnailImg);
            thumbGraph.CompositingQuality = CompositingQuality.HighQuality;
            thumbGraph.SmoothingMode = SmoothingMode.HighQuality;
            thumbGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
            var imageRectangle = new Rectangle(0, 0, newWidth, newHeight);
            thumbGraph.DrawImage(image, imageRectangle);
            thumbnailImg.Save(targetPath, image.RawFormat);
      
    }
}