問題タブ [imageresizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ImageResizer/System.DrawingおよびCMYKJPEG
ImageResizerライブラリを使用して、ASP.NETMVC4プロジェクトで簡単な画像のサイズ変更と回転を行っています。問題は、32 bpp CMYK JPEGファイルを処理するために使用すると、ArgumentExceptionで失敗することですが、(Windows Server 2008 R2)サーバーでのみ機能します。(WindowsVista)ラップトップでは正常に動作します。
問題のJPEGファイルは大きすぎず(700x500)、その他の点では非標準です。すべてのWebブラウザーとペイントは、問題のサーバー自体でも問題なく開くことができます。JPEGはImageMagickを使用して生成されており、ImageMagickにRGB色空間を使用するように依頼するとすべてが正常に機能します(-colorspace sRGB
。)
奇妙なことに、画像のサイズを変更するだけですべての場合に問題なく機能しますが、サーバー上で画像のサイズを変更して回転しようとすると失敗します。
いくつかの低レベルのWin32またはGDI+関数呼び出しがここで失敗しているように見えます-これがスタックトレースの関連部分です:
何か案は?
imageresizer - ImageResizer で認証をスキップする正しい方法
HttpConext オブジェクトには、標準の asp.net パイプラインの一部であるUrlAuthorizationModuleの承認チェックを無効にするために使用されるSkipAutorization プロパティがあります。
ImageResizer は、通常の asp.net パイプラインの外部でUrlAuthorizationModule.CheckUrlAccessForPrincipalを直接呼び出します。その結果、SkipAutorization プロパティは無視されます。
その回避策は次のとおりです。
ここでの外側の OnFirstRequest は、すべてのプラグインがロードされた後に AuthorizeImage サブスクリプションが発生していることを確認するためのもので、チェーン内で最後に実行されます。
実装に大きく依存するため、この回避策は好きではありません。たとえば、ImageResizer プラグインの読み込みが onFirstRequest から別の場所に移動された場合、壊れます。
これが ImageResizer 自体で修正されるとよいでしょう。InterceptModule の追加の Autorization チェックを次の行に沿ったものに変更することをお勧めします。
それは適切でしょうか、それともより良い解決策はありますか?
質問の最後の部分では、私の使用例について説明します。読み取りは完全にオプションですが、このクエリがどのようになったかの見通しを示します。
asp.net アプリケーションには、pdf ドキュメントを提供する HttpHandler があります。URL とヘッダー (私は OAuth を使用しています) でドキュメント ID とセキュリティ情報を受け入れ、すべてのセキュリティ チェックを実行し、成功した場合はデータベースから pdf ドキュメント パスを取得し、ファイルは Response によってクライアントに提供されます。書き込みファイル。
PDFページのプレビューを画像として提供する必要があり、そのためにPdfRendererプラグインでImageResizeを使用しています。
残念ながら、ファイルハンドラーが機能するまでpdfのパスはわかりません。これは、ハンドラーが実行される前に(明らかに)PostAuthorizeRequestですべての魔法が発生するため、ImageResizerがリクエストに対応するには遅すぎます。
これを回避するために、HttpHandler を HttpModule として書き直しました。これは、BeginRequest で実行されます。承認チェックが失敗した場合、リクエストはその場で切断されます。問題がなければ、PathRewrite を使用して結果の pdf をポイントし、同時に適切な Content-Type およびその他のヘッダーを応答に書き込みます。同時に、context.SkipAutorization フラグを設定します。これは、web.config 構成に従って直接 URL を介して pdf ファイルにアクセスできないため、承認がスキップされない場合、パイプラインは PostAuthorizeRequest に到達することさえできないためです。この場合、必要なすべてのチェックがモジュールによってすでに実行されているため、承認をスキップしても安全です。
これにより、実行フローが ImageResizer に到達できるようになります。しかし、画像リサイザーは、pdf URL の承認を再確認することを決定します。上記の回避策を適用しない限り、これは失敗します。
この再チェックの根拠は何ですか?上記のシナリオでは、ImageResizer が処理する必要がある場合、提供する画像は URL に表示されるものではなく、認証チェックは asp.net パイプラインによって既に行われています。この再チェックはどのような場合に役立ちますか?
imageresizer - ホワイトバランスを調整するImageResizer
ImageResizerのStudioJSラッパーで遊んでいます。ImageResizerは色に対してホワイトバランスを調整できますか?最終的には、ユーザーが画像内の白であるはずの領域をクリックできるようにし、画像の残りの部分を調整できるようにします。
AdvancedFiltersプラグインを使用するオートバランス機能が表示されます。さらに一歩進めたいと思います。
c# - MVC アプリで画像をキャッシュする正しい方法
C# Mvc アプリケーションでイメージのサイズを変更して配信するために、 ImageResizingライブラリを使用しています。
起こっていないことの 1 つは、私のイメージがキャッシュされていないことです。
各画像にキャッシュを適切に追加するために何が必要かを理解するのに苦労しています。
書き込みトラックにいるかどうかを知る必要がありますか? これで画像が正しくキャッシュされますか?
私がする必要があるのは、FinalContentType と FinalContentType を ImageResizer_OnPostAuthorizeRequestStart に設定することだと思います (これらの値を取得する場所がわかりません)
そして、Application_PreSendRequestHeaders で、以下のコードを使用してキャッシュ ヘッダーを正しく設定できることを願っています。
ここで説明した方法の修正版を使用しました。
これが私のコードです:
asp.net-mvc-3 - mvc3 ImageResizer
Nugent ImageResizer をダウンロードし、このページhttp://imageresizing.net/docs/managedの例に従って、アップロード時に画像のサイズを変更しようとしていますが、これを Var または Image 変数に入れることができないので、Path.Combineでそれを参照してください。ここにコードがあります
varまたはある種の画像変数内でImageBuilderを取得するにはどうすればよいですか
私がしようとしているのは、エラーを発生させずにImageBuilderをPath.Combine内に配置することだけです。
asp.net-mvc - 拡張子のない ImageResizer と画像ファイル
私はWeb アプリでImageResizer.netを問題なく使用してきましたが、次のように、ファイル拡張子を持たない (または持たない) 画像のサイズを変更して提供する必要があります。
この状況では、ファイルが常に TIFF であることはわかっていますが、ファイル拡張子はありません。
私のオプションは何ですか?
/resizer.debug.ashx: https://gist.github.com/raw/9c867823c983f0e5be10/4db31cb21af8b9b36f0aa4e765f6f459ba4b309f/gistfile1.txt
アップデート
私はコンピューター言語学者の指示に従いました:
http://localhost:58306/ClientImages/Batch/2012/12/10/92d67b45584144beb5f791aaaf760252?width=600
サイズを変更せずに元の画像で応答するだけです。
これはここでも尋ねられました:http://imageresizing.net/docs/howto/cache-non-images#comment-571615564
これは、Cassini または Visual Studio Web サーバー、または任意の名前で開発中に発生します。
c# - ImageResizer ライブラリ: プロジェクトを再構築しないとプラグインを読み込めません
ASP.NET MVC 4 プロジェクトでImageResizerライブラリ(バージョン 3.2.4) を次のプラグインと共に使用しています: Watermark、MvcRoutingShim、DiskCache、SimpleFilters。
Visual Studio 2012 で初めてプロジェクトを起動すると、すべて正常に動作します。
しかし、プロジェクトを 2 ~ 3 回停止して再起動すると、プラグインの読み込みに失敗します。これは、診断ページで確認できます。
DLL ファイルは \bin フォルダーにあります。
Visual Studio でプロジェクトの「クリーン」アクションを実行してから「リビルド」することで、問題を解決できます。
しかし、しばらくするとプラグインのロードに失敗するのはなぜですか?
c# - system.drawing.dll を参照できません
ImageResizer で画像のサイズを変更しようとしていますが、コンパイル エラーが発生し続けます
「エラー 1 タイプ 'System.Drawing.Bitmap' は、参照されていないアセンブリで定義されています。アセンブリ 'System.Drawing への参照を追加する必要があります」
解決策を検索すると、解決策がsystem.drawing.dllを参照して画像を処理できるようにすることであるいくつかの同様の質問が見つかりましたが、次の方法で参照しようとしたとき:
プロジェクトを右クリック -> 参照を追加 -> COM を選択 -> system.drawing.dll を検索
しかし、これにより、「activeX タイプ ライブラリ system.drawing.tlb は .NET アセンブリからエクスポートされたため、参照として追加できません。代わりに、.NET アセンブリへの参照を追加してください」という別のエラーが表示されます。
そして、これは私が次に何をすべきかについて私が唖然としたままになっているところです.
編集:
エラーが発生するコード
amazon-s3 - Cloudfront プラグインを使用して無効な URL を作成する Imageresizer を防ぐにはどうすればよいですか?
Amazon S3 でイメージをホストし、1 つのイメージ サイズのみを保存します。
これまで、Imageresizerを使用して、リクエストごとに画像のサイズを変更することに成功しました。
ここで、Cloudfront CDN を紹介する必要がありますが、これが問題になっています。
ドキュメントに従って設定をセットアップしました。
このような:
次に、アプリケーションへの URL を次のようにキャプチャします。
Imageresizer がそれらを処理できるようにします。
その場合、正しい CDN パスを使用するように URL が変更されますが、クエリ文字列パラメーターもセミコロンに変更されます。
これに:
残念ながら、Amazon S3 はこれを好まず、Access Denied として除外します。ただし、Amazon は喜んで元のクエリ文字列を提供します。
では、クエリ文字列を保持して、Imageresizer がパラメータをセミコロンに変更しないようにするにはどうすればよいでしょうか。
または、セミコロンに関係なく画像を提供するように amazon を設定しますか?
c# - サイズ変更されていないAzureReader2プラグインを使用するAzure用ImageResizer
編集
私はそれを動作させましたが、RemoteReaderプラグインを追加する必要がありました。プロジェクトからAzureReader2プラグインを削除しても機能しますが、これは理にかなっていますが、AzureReader2プラグインにはどのようなメリットがありますか?
元の質問
ここで概説したすべてのこと(コメントを含む)を実行しましたが、imageresizer用のこのプラグインを使用してその場で画像のサイズを変更できない理由を理解できないようです。
これは、要素の下の私のweb.configエントリがどのように見えるかです:
コンテナを「img」と呼ばれるように設定しました。
このURLにアクセスしてテストすると
https://<account>.blob.core.windows.net/img/image.jpg?width=50
、画像は表示されますが、通常のサイズで表示されます。また、これをローカルおよびライブ側のAWSで実行しようとしましたが、サイズ変更は行われません:(