最近、我々のASP.NET MVC 4アプリケーションで画像を動的にサイズ変更するために、GDI +でImageResizer.Netを使用し始めました。ImageResizer.netを使用して画像の現在のサイズを確認
イメージの実際の解像度(DPI、PPI、何でもそれを呼び出す)、イメージ(バイト配列として読み込まれる)を決定する方法はありますか。必要なときに我々は現在、指定された低解像度に画像のサイズを変更するには、このようなワークフローを持っている:
//pseudo-code
var image = (Bitmap)Bitmap.FromStream(contentStream)
var resX = image.HorizontalResolution;
var resY = image.VerticalResolution;
//calculate scale factor
//determine newHeight and newWidth from scale
var settings = new ResizeSettings("width={newWidth}&height={newHeight}")
var newImage = ImageBuilder.Current.Build(image, someNewImage, settings);
これはうまく動作しますが、そのGDI +とImageResizerを混合し、同じデータのストリーム開閉をたくさん持っています(実際のコードは少し冗長で、多くのusing
ステートメントがあります)。
ImageResizerだけで水平解像度と垂直解像度を判断する方法はありますか?私はすぐにドキュメントで何かを見つけることができませんでした。
当面は、管理対象APIを使用しましたが、最終的にMVCルーティングが使用されます。
は典型的には、埋め込まれたDPI値が正しくないか価値です。あなたがcertianイメージフォーマットだけを使用していて、それらがどのようにエンコードされているかを正確に制御していない限り、私はあなたが計算にそれらを頼りにする方法を見ません。あなたの使用シナリオについてもう少し説明できますか? –
当社は、特定の方法でアクセスされた場合、max-96dpi画像のみを提供する契約上の義務を負います。これを達成するには、イメージをそのdpiでのサイズに縮小し、次にBitmapクラスで解像度を設定します。これはPNG画像とJPG画像の両方で動作するように思われます。スケーリングが必要な画像のソースは知られています(つまり、ユーザーはアップロードしていません) –