Question

I have an image stored on server at location:

C:\inetpub\wwwroot\imageupload\images

in my code i want to use an image from folder images so i am trying as follows:

Server.MapPath("/images/sample1.jpg")

But i am getting the error as: enter image description here

Please help me to solve the error

As on several answer asking to post the code,it is as follows

.aspx

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

<%@ Register Assembly="CS.Web.UI.CropImage" Namespace="CS.Web.UI" TagPrefix="cs" %>

<!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>Untitled Page</title>
</head>
<body>
 <cs:CropImage ID="wci1" runat="server" />
    </body>
</html>

.aspx.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

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

        wci1.Crop(Server.MapPath("/imageupload/images/sample1.jpg"));

        /*
         this part is just to show the image after its been cropped and saved! so focus on just the code above.
         */
        Image img = new Image();
        img.ImageUrl = "images/sample1.jpg?rnd=" + (new Random()).Next();  // added random for caching issue.
        this.Controls.Add(img);
    }
}

Crop method is from a .dll file i have used from http://imagecropping.codeplex.com/

Was it helpful?

Solution

There error is in the CSA.Web.UI.CropImage.Crop method, as described by the stack trace.

Server.MapPath, to my knowledge, will not return a null string (it'll throw an exception if it can't map - but not a NullReferenceException).

I'd suggest you look into the method I mention and possibly post the relevant code, too.

EDIT:

So, I had a quick look at the Crop code from the CodePlex project you mention and found the following lines (formatting mine):

private string ImagePath { get { return ViewState["ImageUrl"].ToString(); } }

drawing.Image image = drawing.Image.FromStream(
    new MemoryStream(
        System.IO.File.ReadAllBytes(
            HttpContext.Current.Server.MapPath(this.ImagePath)
        )
    )
);

cropedImage.Save(path);

Now, it seems to me that:

  • Argument Path is not null*
  • Argument ImageUrl is null**

*Though it might be 'incorrect' it isn't the problem right now.

**Meaning the call ToString is the breaking factor in this code.

Basically, the control doesn't have an image set to crop and this is evident in your own code:

//currently no ImageUrl set...
<cs:CropImage ID="wci1" runat="server" />

//your'e trying to crop here without an ImageUrl...
wci1.Crop(Server.MapPath("/imageupload/images/sample1.jpg"));   

The fix is to specify an image via ImageUrl, AFAIK, however I can't see how to do so.

OTHER TIPS

You have stored your images in imageupload\images but when you tried to grab them you forgot to add in the imageupload directory:

Server.MapPath("/imageupload/images/sample1.jpg")

Try a relative path instead:

Server.MapPath("images/sample1.jpg")

consider using "~/images/sample1.jpg" for your source. the "~" is replace by the application name in the call to Server.MapPath

According to: https://webcropimage.svn.codeplex.com/svn/trunk/CS.WebControls/WebCropImage/CropImage.cs

Method Crop(), gives a path where to save the cropped image.

Which image should be cropped is stored in wci1.ImagePath

Please check if this value is null, and this should point out the problem.

As there is no <Form runat="Server">, maybe it cannot access the ViewState:

private string ImagePath { get { return ViewState["ImageUrl"].ToString(); } }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top