C# 在c中生成1x1白色gif作为流#

C# 在c中生成1x1白色gif作为流#,c#,asp.net-mvc,image,controller,C#,Asp.net Mvc,Image,Controller,我想从MVC2控制器返回一个图像作为ActionResult。此图像为1x1白色像素(用于跟踪应用程序)。我不想引用磁盘或数据库中的映像。我想在我的方法中生成映像,然后从控制器操作返回它 任何人都知道如何生成1x1白色图像,该图像可以传递到FileStreamResult,以便从控制器操作返回?复制自: 我不会说C#,但如果在程序中使用此字符串,则可以在磁盘上存储和访问一个额外的文件。避免使用Response.End(),不是一个好主意,请在此处阅读更多内容: 相反,为了避免不必要的Thread

我想从MVC2控制器返回一个图像作为ActionResult。此图像为1x1白色像素(用于跟踪应用程序)。我不想引用磁盘或数据库中的映像。我想在我的方法中生成映像,然后从控制器操作返回它

任何人都知道如何生成1x1白色图像,该图像可以传递到FileStreamResult,以便从控制器操作返回?

复制自:


我不会说C#,但如果在程序中使用此字符串,则可以在磁盘上存储和访问一个额外的文件。

避免使用
Response.End(),不是一个好主意,请在此处阅读更多内容:

相反,为了避免不必要的
ThreadAbortException
,请将操作更改为
FileContentResult
,如下所示:

public FileContentResult Track(Guid id)
{
    //do tracking stuff ....

    //return empty gif
    const string clearGif1X1 = "R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";
    return new FileContentResult(
                       Convert.FromBase64String(clearGif1X1), "image/gif");
}

同样出于跟踪目的,请记住添加某种类型的

我更喜欢使用带有扩展名的图像,因此我使用的是:

    // URL is /mailers/images/pixel123.gif
    // where 123 is the tracking number
    [ActionName("images")]
    public ActionResult Pixel(string id)
    {
        int trackingID = int.Parse(id.Substring("pixel".Length, id.Length - "pixel.gif".Length));

        // do something in database

        string trackingPixel = @"R0lGODlhAQABAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAABAAEAAAgEAP8FBAA7";
        return File(System.Convert.FromBase64String(trackingPixel), "image/gif");
    }

这并不能解决您的问题,但您应该使用
.png
格式的1x1透明像素。这样你就可以在不同的主题上使用它。我认为你也许应该在这里包括/重写帖子内容,这样如果你碰巧去世了,答案仍然有用,或者使用
ivborw0kggoaaansuheugaaaaaaabcayaaffcsjaaaac0leqvqi12p4dwqacfsd/wmmxy8aaasuvork5cyii=
对于较短的1x1 pngoh,使用
image/png
而不是
image/gif
如果你使用我的string1x1清晰gif(from)r0lgodlhaqabaaap///waaach5baeaaaaaaaaaaaaaaaaaaaaaaaaaaaaicraaow==根据科巴尔上面的评论,我无法让他的png片段工作。它返回此错误:
输入不是有效的Base-64字符串,因为它包含非Base-64字符、两个以上的填充字符或填充字符中的非法字符。
但是,我发现这个稍有不同的PNG片段工作得很好:
ivborw0kggoaaaansuhueugaaaaaaaabcaaaaacaaac0leqvqyv2ngyaaaamaawgmwq0aaaaasuvork5cyii=
我不知道为什么有人会使用807字节长的GIF。这里看起来有一些更好的选择。
    // URL is /mailers/images/pixel123.gif
    // where 123 is the tracking number
    [ActionName("images")]
    public ActionResult Pixel(string id)
    {
        int trackingID = int.Parse(id.Substring("pixel".Length, id.Length - "pixel.gif".Length));

        // do something in database

        string trackingPixel = @"R0lGODlhAQABAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAABAAEAAAgEAP8FBAA7";
        return File(System.Convert.FromBase64String(trackingPixel), "image/gif");
    }