Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 通过动态图像处理程序渲染图像的布局修复_C#_Asp.net_Css_Image Scaling - Fatal编程技术网

C# 通过动态图像处理程序渲染图像的布局修复

C# 通过动态图像处理程序渲染图像的布局修复,c#,asp.net,css,image-scaling,C#,Asp.net,Css,Image Scaling,我正在使用httphandler动态调整页面上呈现的图像的大小。我有一个所有图像都必须确认的预设宽度,并且图像的高度可以变化(比例限制为原始宽度和高度)。我正在缓存图像-但是,当它们最初加载时,在呈现页面后调用httphandler-因此对于较长的图像-有时在初始加载时,布局会随着较大的图像而中断,因为它们与页面下方的内容重叠。下面是一个示例屏幕截图: 以下是css: .gallery { margin-left:0px; padding-left:5px; } ul.g

我正在使用httphandler动态调整页面上呈现的图像的大小。我有一个所有图像都必须确认的预设宽度,并且图像的高度可以变化(比例限制为原始宽度和高度)。我正在缓存图像-但是,当它们最初加载时,在呈现页面后调用httphandler-因此对于较长的图像-有时在初始加载时,布局会随着较大的图像而中断,因为它们与页面下方的内容重叠。下面是一个示例屏幕截图:

以下是css:

.gallery
{

    margin-left:0px;
    padding-left:5px;
}


ul.gallery div.top_frame
{
       width:732px
}


ul.gallery div.view_frame
{
    margin-left:5px;
}

ul.gallery div.image_frame
{
    border: 1px solid #dddddd; padding-top: 5px; height:100%; min-height:490px;
    padding-bottom: 5px; text-align: center;
}

ul.gallery div.button_frame
{
    width: 732px; text-align: right; margin: 4px 0px 0px 0px;
}


ul.gallery div.name_frame, ul.gallery div.original_name_frame
{

    margin: 0px 0px 0px 5px;
}

ul.gallery div.name_frame h2
{
    margin: 2px 0px 3px 0px;
    padding: 0px;

}

ul.gallery div.date_frame
{
    margin-left:5px;
    margin-bottom:5px;
}

ul.gallery div.update_frame
{
    width: 732px; margin-bottom: 5px; margin-top: 5px;text-align:right;
}



ul.gallery div.desc_frame
{
    margin-left:5px;
    background-color:#eeeeee;

}

ul.gallery li
{
     width: 732px;

     display: -moz-inline-stack;
     display: inline-block;
     vertical-align:top;
     margin: 5px;
     zoom: 1;
     *display: inline;
     _height:100%;
      color:#000000;
      letter-spacing:0px;
      line-height:normal;

} 

ul.breadcrumbs li
{
    float:left;

    margin:0px;
    padding:0px;
    width:100%;
}

ul.breadcrumbs li a
{
    font-size:12px;
}

由于下面屏幕截图中的图像可能被缓存,因此您可能看不到损坏的布局。我想知道在表格中渲染图像是否更好?还是有css修复程序?我甚至尝试过Jquery,并使用document ready来调整图像容器的高度——但图像可能无法加载——因此我无法在函数中返回图像的高度。对如何解决这个问题有什么建议吗

如果所有图像的宽度都相同,则输出带有宽度属性的IMG标记。这可能会有所帮助

<img src="..." width="720">


对这种类型的应用程序使用
input type=“image”
有点奇怪。为什么不在图像周围使用A标签?

这是解决问题的关键:

但是,当最初加载它们时,会在呈现页面后调用httphandler


在响应发送到浏览器之前,可以看到请求,并可以执行任何需要的操作,包括使用调整大小的图像进行响应。我经常这样做,从来没有遇到过问题。由于它对您不起作用,我敢肯定您的HttpHandler中有一个bug。

如果我在自定义图像的prerender事件中创建图像并将其加载到缓存中,它似乎已经修复了这个问题。最初,控件将图像信息呈现给浏览器中的src字符串,然后该图像被调用cachemanager的httphandler截获(如果存在-返回,如果不存在-创建)。因为上面的问题似乎只有在最初创建图像时才会发生——我认为在“请求”之前重新创建它可能会有所帮助——而且似乎已经发生了。如果这有后果-我将编辑我的解决方案

我将尝试使用宽度属性。我也在考虑在超链接中包装一个图像。我在这个实例中使用了一个图像按钮,因为我想在单击事件上执行代码。这有一个不幸的副作用,即掩盖了问题,通过发送一个大图像(小图像可能足够)增加了网站流量,并允许web浏览器进行大小调整。这不是一个解决方案,最多只是一个解决方案。如果我使用动态图像自定义控件将字符串呈现给浏览器,浏览器将调用httphandler根据从字符串中提取的信息处理图像。在将字符串呈现到浏览器之前,不会调用该请求(用于动态图像)。我在这里错了吗?浏览器如何获取标记并不重要。在某些情况下,它需要使用URL从服务器请求图像。IHttpHandler截获该请求,并可以在标准处理完成之前对其进行处理。但我不认为这是你的问题。我跟踪了你网站的链接,这里显示的绿色元素misplaced是一个DIV,不包含任何类型的图像,甚至不作为CSS背景图像!你能告诉我没有正确调整大小的图像的名称吗?告诉我它的
ID
重新思考这个问题-你提到你经常使用动态图像,但没有看到这个问题。在我的自定义控件中,一个字符串被呈现为图像url:src=“../controls/cachedimageservice.axd?data=db_10801_h720_w720_t0”-然后该请求被处理程序拦截并检查缓存(如果在缓存中找不到,则创建图像)。如果我首先在自定义控件的prerender方法中创建缓存的图像-我似乎没有遇到此问题。我假设您在动态创建图像时缓存图像-您在管道中的何处调用它们?IHttpHandler只提供一个处理请求的位置,没有选择:您在ProcessRequest中执行此操作。除非你将其他东西称为HttpHandler。在pre-render事件中创建图像改善了情况,但不是修复方法-在测试过程中,我仍然看到如上所述的损坏布局。我认为这确实是css问题,我现在正在将图像渲染到表中。如果这解决了问题,我会发回。有原因吗?