Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按钮单击进入无限循环(ASP.Net)_C#_Asp.net_Infinite Loop_Bitmapimage - Fatal编程技术网

C# 按钮单击进入无限循环(ASP.Net)

C# 按钮单击进入无限循环(ASP.Net),c#,asp.net,infinite-loop,bitmapimage,C#,Asp.net,Infinite Loop,Bitmapimage,我正在从特定路径拍摄图像,并在其上应用颜色,然后我想保存图像并在单击按钮时显示它。但那个点击事件进入无限循环 它不会在一段时间内导致循环,但若您运行多个项目 时间和地点调试器,然后你会发现它是循环 下面是我的代码: aspx代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Convert.aspx.cs" Inherits="ConvertImage.Convert" %> <!DOCTYPE

我正在从特定路径拍摄图像,并在其上应用颜色,然后我想保存图像并在单击按钮时显示它。但那个点击事件进入无限循环

它不会在一段时间内导致循环,但若您运行多个项目 时间和地点调试器,然后你会发现它是循环

下面是我的代码:

aspx代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Convert.aspx.cs" Inherits="ConvertImage.Convert" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

        <div>
            <div>
                <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click1" />
                <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
            </div>
            <div>
                <asp:Image ID="OldImage" ImageUrl="~/Image/Panda.jpg" runat="server" />
                <asp:Image ID="NewImage" runat="server" />
            </div>
        </div>

    </form>
</body>
</html>

c#代码:

使用系统;
使用System.Collections.Generic;
使用系统图;
使用系统、绘图、成像;
使用System.IO;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用静态System.Net.Mime.MediaTypeNames;
名称空间转换映像
{
公共部分类转换:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
}
受保护的无效按钮1\u单击1(对象发送者,事件参数e)
{
比较图像();
}
私有void CompareImage()
{
位图图像1;
尝试
{
image1=新位图(Server.MapPath(@“~\Image\Panda.jpg”),true;
OldImage.ImageUrl=“~/Image/Panda.jpg”;
int x,y;
对于(x=0;x=150&&y<300),则为else
{
Color pixelColor=image1.GetPixel(x,y);
Color newColor=Color.FromArgb(pixelColor.R,200100);
图像1.设置像素(x,y,新颜色);
}
其他的
{
Color pixelColor=image1.GetPixel(x,y);
Color newColor=Color.FromArgb(pixelColor.R,100210);
图像1.设置像素(x,y,新颜色);
}
}
}
image1.Save(Server.MapPath(@“~\Image\xyz.jpg”)、ImageFormat.Jpeg;
NewImage.ImageUrl=@“~/Image/xyz.jpg”;
Label1.Text=“像素格式:”+image1.PixelFormat.ToString();
}
捕获(例外情况除外)
{
响应。写入(例如消息);
}
}
}
}

请告诉我哪里错了。

尝试调用Debug.Writeline(image1.height)和image1.width。还要添加断点并逐步完成循环。很难说这个循环将走向何方。对我来说,在循环中一切看起来都很好,它不应该是无限的

发回Debug.Writeline的结果,以便我们可以通过断点或Debug.Writeline帮助您完成调试过程,或者您在调试过程中得到了什么

还可以尝试在不同的映像上运行它和/或确认映像的路径

正如我所说,您的代码是好的,这要么是路径问题,似乎不是因为您获得了正确的宽度和高度,要么很可能是身份验证问题。我使用此图像运行了您的代码

我能够得到这个图像作为输出

确认这是否是正确的输出

你还可以尝试改变

image1.Save(Server.MapPath(@"~\Image\xyz.jpg"), ImageFormat.Jpeg);

我的最终代码

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>
            <div>
                <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" />
                <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
            </div>
            <div>
                <asp:Image ID="OldImage" ImageUrl="~/Image/Panda.jpg" runat="server" />
                <asp:Image ID="NewImage" runat="server" />
            </div>
        </div>

    </form>
</body>
</html>


这对我来说很有魅力。祝你好运。

我测试了这段代码,工作正常,你确定你的图像路径吗?@ShriramPanchal请重新运行,单击按钮后它将进入无限。将调试器放入代码中,您就会知道它是无限的。已经用调试器进行了测试,但没有发现任何结果,我还将System.Diagnostics.Debug.Print(“罚款”);在内部比较图像,输出没有问题,不是吗?按钮的点击事件没有循环?没有任何类型的无限循环,像charm一样工作,并获得与@Muhand Jumah相同的输出,我已经为您指出了pathImage hight是:625,hight是450。保存时没有问题,但在保存相同的按钮后,单击继续重复,这就是问题所在。好的,现在我们消除了循环出错的可能性。尝试注释所有这些行image1.Save(Server.MapPath(@“~\Image\xyz.jpg”)、ImageFormat.Jpeg);NewImage.ImageUrl=@“~/Image/xyz.jpg”;Label1.Text=“像素格式:”+image1.PixelFormat.ToString();在对它们进行注释之后,运行它,看看您是否会进入无限循环。我已经尝试了所有这些,然后我知道这一行导致了问题:image1.Save(Server.MapPath(@“~\Image\xyz.jpg”)、ImageFormat.Jpeg;我的下一个想法是某种身份验证错误。能否尝试在自己的变量中设置Server.MapPath(@“~\Image\xyz.jpg”)?然后在image1.save中,通过这种方式调用变量名,我们可以知道Image.save还是Server.MapPath给了我们一个无限循环。您运行了代码吗?这是没有错误的。。。
image1.Save(AppDomain.CurrentDomain.BaseDirectory + "Image/xyz.jpg", ImageFormat.Jpeg);
<%@ 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>
            <div>
                <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" />
                <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
            </div>
            <div>
                <asp:Image ID="OldImage" ImageUrl="~/Image/Panda.jpg" runat="server" />
                <asp:Image ID="NewImage" runat="server" />
            </div>
        </div>

    </form>
</body>
</html>
using System;
using System.Drawing;
using System.Drawing.Imaging;

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

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        CompareImage();
    }

    private void CompareImage()
    {
        Bitmap image1;
        try
        {
            image1 = new Bitmap(Server.MapPath(@"~\Image\Panda.jpg"), true);
            OldImage.ImageUrl = "~/Image/Panda.jpg";
            int x, y;


            for (x = 0; x < image1.Width; x++)
            {
                for (y = 0; y < image1.Height; y++)
                {
                    if (y < 150)
                    {
                        Color pixelColor = image1.GetPixel(x, y);
                        Color newColor = Color.FromArgb(pixelColor.R, 25, 60);
                        image1.SetPixel(x, y, newColor);
                    }
                    else if (y >= 150 && y < 300)
                    {
                        Color pixelColor = image1.GetPixel(x, y);
                        Color newColor = Color.FromArgb(pixelColor.R, 200, 100);
                        image1.SetPixel(x, y, newColor);
                    }
                    else
                    {

                        Color pixelColor = image1.GetPixel(x, y);
                        Color newColor = Color.FromArgb(pixelColor.R, 100, 210);
                        image1.SetPixel(x, y, newColor);

                    }
                }
            }


            //image1.Save(Server.MapPath(@"~\Image\xyz.jpg"), ImageFormat.Jpeg);
            image1.Save(AppDomain.CurrentDomain.BaseDirectory + "Image/xyz.jpg", ImageFormat.Jpeg);
            NewImage.ImageUrl = @"~/Image/xyz.jpg";
            Label1.Text = "Pixel format: " + image1.PixelFormat.ToString();



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

}