I have a file called FPN = "c:\ggs\ggs Access\images\members\1.jpg "
I'm trying to get the dimension of image 1.jpg
, and I'd like to check whether image dimension is valid or not before loading.
Image dimensions are the length and width of a digital image. It is usually measured in pixels, but some graphics programs allow you to view and work with your image in the equivalent inches or centimeters.
System.Drawing.Image img = System.Drawing.Image.FromFile(@"c:\ggs\ggs Access\images\members\1.jpg"); MessageBox.Show("Width: " + img.Width + ", Height: " + img.Height);
Wpf class System.Windows.Media.Imaging.BitmapDecoder
doesn't read whole file, just metadata.
using(var imageStream = File.OpenRead("file")) { var decoder = BitmapDecoder.Create(imageStream, BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.Default); var height = decoder.Frames[0].PixelHeight; var width = decoder.Frames[0].PixelWidth; }
Update 2019-07-07 Dealing with exif
'ed images is a little bit more complicated. For some reasons iphones save a rotated image and to compensate they also set "rotate this image before displaying" exif flag as such.
Gif is also a pretty complicated format. It is possible that no frame has full gif size, you have to aggregate it from offsets and frames sizes.
So I used ImageProcessor instead, which deals with all the problems for me. Never checked if it reads the whole file though, because some browsers have no exif
support and I had to save a rotated version anyway.
using (var imageFactory = new ImageFactory()) { imageFactory .Load(stream) .AutoRotate(); //takes care of ex-if var height = imageFactory.Image.Height, var width = imageFactory.Image.Width }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With