2011-02-11 69 views
1

我有一个ASP.NET Web应用程序。我正在尝试的应该很简单:在显示图像后,我有一个旋转按钮,应该允许用户将图像旋转90度。这里是按钮点击代码...什么可能导致此图像无法显示?

Dim i As Image 

    i = Image.FromFile("C:\Inetpub\wwwroot\myWebApp\MyImage.jpg") 


    'rotate the picture by 90 degrees 
    i.RotateFlip(RotateFlipType.Rotate90FlipNone) 

    're-save the picture as a Jpeg 
    i.Save("C:\Inetpub\wwwroot\myWebApp\MyImage.jpg",System.Drawing.Imaging.ImageFormat.Jpeg) 

    'tidy up after we've finished 
    i.Dispose() 

这里使用的图像和按钮是不显着的。当我创建一个仅有1页的示例应用程序时,此功能完美无缺。但是,当我放入我的主应用程序时,即使在新页面中,它们本身没有其他任何东西,甚至没有母版页,但它实际上会旋转图像并将其写回文件系统,但它不显示旋转的文件。它显示了原来的图像。直到我打F5,然后,无论我按了多少次按钮,它都可以很好地工作。我尝试了一些我能想到的方法来清除亏损无济于事。

回答

1

您是否正在使用更新面板或其他机制重新请求图像?您可以通过在IMG src或ASP:Image源中添加类似时间戳或类似的GET参数来强制刷新。

+0

同意。旧图像最有可能被缓存。我会在将文件名下推到浏览器之前记下文件名。 – Jemes 2011-02-11 04:33:08

0

除了将图像保存回网络根目录之外,您可以保留原始图像,并将旋转后的图像流式传输到客户端。

<img src="RotateImage.aspx?Image=MyImage.jpg&Rotate=90" /> 

,然后在RoateImage.aspx做同样的负载/旋转工作:

i.Save(Response.OutputStream, ImageFormat.Jpeg) 
Response.ContentType = "image/jpeg" 
0

的图像从缓存中,这就是为什么它不显示更新。显示相同图像的较新版本。您可以将查询字符串附加到图像的路径。例如,

<img src='/images/image.jpg?<%= DateTime.Now.Ticks %>' /> 
相关问题