Pergunta

Eu tenho uma imagem armazenado no servidor local:

C:\inetpub\wwwroot\imageupload\images

no meu código eu quero usar uma imagem da pasta de imagens, então eu estou tentando, como segue:

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

Mas estou recebendo o erro como:enter image description here

Por favor me ajude a resolver o erro

Como em vários resposta pedindo para postar o código,é como se segue

.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);
    }
}

Cortar método é de um .o arquivo dll de eu ter utilizado a partir do http://imagecropping.codeplex.com/

Foi útil?

Solução

Há erro está no CSA.Web.UI.CropImage.Crop o método, descrito pelo rastreamento de pilha.

Server.MapPath, para meu conhecimento, não irá retornar uma seqüência de caracteres nula (que vai lançar uma exceção se não pode mapa - mas não de uma NullReferenceException).

Eu sugiro que você olhe para o método de eu falar e, possivelmente, postar o código relevante, também.

EDITAR:

Então, eu dei uma olhada rápida no Crop código de o CodePlex projeto você menciona e encontradas as seguintes linhas (formatação de minas):

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);

Agora, parece-me que:

  • Argumento Path não é nulo*
  • Argumento ImageUrl é null**

*Embora possa ser 'incorreto' não é o problema agora.

**Significado a chamada ToString é o que quebra o fator este código.

Basicamente, o controle não tem uma imagem para recortar e isso é evidente em seu próprio código:

//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"));   

A correção é para especificar uma imagem através de ImageUrl, AFAIK, no entanto não estou a ver como fazer isso.

Outras dicas

Que você tenha armazenado suas imagens em imageupload\images mas quando tentou agarrá-los, você esqueceu de adicionar na imageupload diretório:

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

Tente um caminho relativo em vez disso:

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

considere o uso de "~/images/sample1.jpg" para a sua origem.o "~" é substituído pelo nome do aplicativo na chamada para o Servidor.MapPath

De acordo com:https://webcropimage.svn.codeplex.com/svn/trunk/CS.WebControls/WebCropImage/CropImage.cs

Método de Cultura(), dá um caminho onde salvar a imagem cortada.

Qual imagem deve ser cortada é armazenado em wci1.ImagePath

Por favor, verifique se este valor é null, e isso deve apontar o problema.

Como não há <Form runat="Server">, talvez ele não pode acessar a ViewState:

private string ImagePath { get { return ViewState["ImageUrl"].ToString(); } }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top