English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
سوف تتعلم في هذا المثال كيفية إيجاد دقة صور jpeg دون استخدام مكتبات خارجية
لفهم هذا المثال، يجب أن تكون على علم بما يليبرمجة بايثونالموضوع:
JPEG (تُنطق بـ "جاي-peg") هو مجموعة من خبراء الصور المشتركة. إنه أحد أوسع تقنيات ضغط الصور المستخدمة.
معظم تنسيقات الملفات تحتوي على رؤوس (بضعة بت في البداية)، وتحتوي هذه الرؤوس على معلومات مفيدة حول الملف.
على سبيل المثال، يحتوي رأس JPEG على معلومات مثل الارتفاع والعرض وعدد الألوان (أبيض وأسود أو RGB) وما إلى ذلك. في هذا البرنامج، نجد دقة الصور التي تقرأ هذه الرؤوس دون استخدام مكتبات خارجية.
def jpeg_res(filename): """هذا الدالة تضيف دقة ملف الصورة jpeg المرسل إليها""" # فتح الصورة، قراءة في النمط الثنائي with open(filename, 'rb') as img_file: # ارتفاع الصورة (بثمانية بت) في الموضع 164 img_file.seek(163) # قراءة ثمانية بت a = img_file.read(2) # حساب الارتفاع height = (a[0] << 8) + a[1] # الثمانية القادمة هي عرض a = img_file.read(2) # حساب العرض width = (a[0] << 8) + a[1] print("دقة الصورة هي", width, "x", height) jpeg_res("img1.jpg")
نتيجة الإخراج
دقة الصورة هي 280 × 280
في هذا البرنامج، نفتح الصورة في نمط الثنائي. يجب فتح الملفات غير النصية في هذا النمط.
لاحظ، هذا ينطبق فقط على تنسيق ملفات JPEG (JFIF) المعيارية. إذا كان ملفك يستخدم معيارًا آخر (مثل EXIF) للترميز، فإن الكود لن يعمل.
نستخدم عمليات التحويل السحابي << لنقل 2 بت إلى عدد. في النهاية، نعرض الدقة.