2011-02-11 10 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

更新パネルやその他のメカニズムを使用して画像を再リクエストしていますか?タイムスタンプまたは類似のGETパラメータをIMG srcまたはASP:Imageソースに置くことによって、リフレッシュを強制することができます。

+0

古いイメージがキャッシュされる可能性が最も高いあなたがブラウザにプルダウンする前に、ファイル名にタイムスタンプを付けます。 – Jemes

0

イメージをWebルートに保存する代わりに、元のイメージをそのまま維持して、回転したイメージをクライアントにストリーミングすることができます。それが更新されて示されていない理由がある、画像がキャッシュから提供され

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

:あなたのRoateImage.aspxで

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

、その後は同じ負荷/回転作業などを行います。同じイメージの新しいバージョンを表示する。イメージのパスにクエリ文字列を添付することができます。例えば、

<img src='/images/image.jpg?<%= DateTime.Now.Ticks %>' /> 
関連する問題