الحصول على دقة صورة jpeg باستخدام C# وبيئة .NET؟

StackOverflow https://stackoverflow.com/questions/123838

  •  02-07-2019
  •  | 
  •  

سؤال

سيقوم عملاؤنا بتحميل صور لطباعتها على مستنداتهم، وقد طُلب منا التوصل إلى طريقة للحصول على دقة الصورة لتحذيرهم إذا كانت دقة الصورة منخفضة للغاية وستبدو متقطعة في الصورة المنتج النهائي

إذا كان الأمر يتعلق بذلك، فيمكننا أيضًا استخدام الأبعاد إذا كان أي شخص يعرف كيفية الحصول عليها ولكن سيكون القرار هو المفضل

شكرًا لك

هل كانت مفيدة؟

المحلول

System.Drawing.Image

Image newImage = Image.FromFile("SampImag.jpg");
newImage.HorizontalResolution

نصائح أخرى

ذلك يعتمد على ما كنت أبحث عنه...إذا كنت تريد DPI للصورة فأنت تبحث عن HorizontalResolution وهو DPI للصورة.

Image i = Image.FromFile(@"fileName.jpg");
i.HorizontalResolution;

إذا كنت تريد معرفة حجم الصورة فأنت بحاجة إلى حساب قياسات الصورة وهي:

int docHeight = (i.Height / i.VerticalResolution);
int docWidth = (i.Width / i.HorizontalResolution);

سيعطيك هذا ارتفاع المستند وعرضه بالبوصة والذي يمكنك بعد ذلك مقارنته بالحجم الأدنى المطلوب.

تعتبر DPI منطقية عند الطباعة فقط.72 نقطة في البوصة هو معيار Mac و96 نقطة في البوصة هو معيار Windows.دقة الشاشة تأخذ البكسل فقط في الاعتبار، وبالتالي فإن دقة الشاشة 72 نقطة في البوصة 800 × 600 JPEG هي نفس دقة الشاشة من 96 نقطة في البوصة 800 × 600 بكسل.

بالعودة إلى الثمانينيات، استخدم Mac دقة شاشة/طباعة تبلغ 72 نقطة في البوصة لتناسب حجم الشاشة/الطباعة، لذلك عندما تكون لديك صورة على الشاشة بنسبة 1:1، فإنها تتوافق مع نفس الحجم على الطابعة.قام Windows بزيادة دقة الشاشة إلى 96 نقطة في البوصة للحصول على عرض أفضل للخط.ولكن نتيجة لذلك، لم تعد الصورة المعروضة على الشاشة تناسب الحجم المطبوع بعد الآن.

لذلك، بالنسبة لمشروع الويب، لا تهتم بـ DPI إذا لم تكن الصورة للطباعة؛72 نقطة في البوصة، 96 نقطة في البوصة، حتى 1200 نقطة في البوصة يجب أن تعرض نفس الشيء.

Image image = Image.FromFile( [file] );
GraphicsUnit unit = GraphicsUnit.Point;
RectangleF rect = image.GetBounds( ref unit );
float hres = image.HorizontalResolution;
float vres = image.VerticalResolution;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top