Recientemente hemos comenzado a usar ImageResizer.Net en GDI + para cambiar el tamaño de las imágenes dinámicamente en nuestra aplicación ASP.NET MVC 4.Determine el tamaño actual de la imagen con ImageResizer.net
¿Hay alguna manera, utilizando solo ImageResizer, para determinar la resolución real (PPP, PPI, como quiera llamar) de la imagen (que se lee como una matriz de bytes). Actualmente tenemos un flujo de trabajo de este tipo, cambiar el tamaño de la imagen a una resolución más baja especificada cuando sea necesario:
//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);
Esto funciona bien, pero su mezcla GDI + y ImageResizer, y tiene una gran cantidad de abertura de flujo y cierre de los mismos datos (el código real es un poco más detallado, con muchas declaraciones using
).
¿Hay alguna manera de determinar la resolución horizontal y vertical con solo ImageResizer? No pude encontrar nada inmediatamente en la documentación.
Por el momento, hemos utilizado la API administrada, pero finalmente usaremos el enrutamiento MVC.
Típicamente, los valores DPI incrustados son incorrectos o sin valor. A menos que solo esté usando formatos de imagen certian y haya controlado exactamente cómo están codificados, no veo cómo podría confiar en ellos en un cálculo. ¿Podría explicar un poco más sobre su escenario de uso? –
tenemos la obligación contractual de mostrar solo imágenes de máximo 96 dpi cuando accedemos de cierta manera. Lo estamos logrando reduciendo la escala de la imagen a lo que sería el tamaño en ese ppp, luego ajustando la resolución en la clase 'Bitmap'. Esto parece funcionar tanto para imágenes PNG como JPG, y la fuente de las imágenes que requieren escalado es conocida (es decir: no cargada por el usuario) –