يبدو أن تحويل الصور بين الصيغ يجب أن يكون بسيطًا — فقط غيّر الامتداد، صحيح؟ في الواقع، يواجه آلاف المستخدمين يوميًا أخطاء غامضة، ومخرجات تالفة، وتعطّل البرامج عند محاولة تحويل الصور على أجهزتهم المحلية. وفي المقابل، تتعامل الأدوات عبر الإنترنت مثل GuruPDF مع التحويلات نفسها بسلاسة تامة خلال ثوانٍ.
تتعمّق هذه المقالة في أكثر أخطاء تحويل الصور شيوعًا التي يواجهها الناس على Windows وmacOS وLinux، وتشرح لماذا تحدث، وتوضح لك كيف تتجنبها تمامًا.
أكثر صيغ الصور شيوعًا (ولماذا لا تتوافق دائمًا بسلاسة)
قبل أن ننتقل إلى الأخطاء، دعنا نفهم الصيغ التي تسبب أكبر قدر من المتاعب:
| Format | Full Name | Compression | Transparency | Typical Use |
|---|---|---|---|---|
| JPG/JPEG | Joint Photographic Experts Group | ضياعي | لا | الصور، صور الويب |
| PNG | Portable Network Graphics | غير ضياعي | نعم | لقطات الشاشة، الشعارات، الرسومات |
| WebP | Web Picture | كلاهما | نعم | تحسين الويب الحديث |
| HEIC/HEIF | High Efficiency Image Container | ضياعي/غير ضياعي | نعم | صور iPhone/iPad (iOS 11+) |
| AVIF | AV1 Image File Format | ضياعي/غير ضياعي | نعم | صيغة ويب من الجيل التالي |
| SVG | Scalable Vector Graphics | N/A (vector) | نعم | الأيقونات، الرسوم التوضيحية، الشعارات |
| TIFF | Tagged Image File Format | غير ضياعي | نعم | الطباعة، المسح الضوئي، الأرشفة |
| BMP | Bitmap | بلا | لا | صيغة Windows قديمة |
| GIF | Graphics Interchange Format | غير ضياعي | 1-bit | الرسوم المتحركة، الرسومات البسيطة |
| EPS | Encapsulated PostScript | N/A (vector) | لا | تصميم الطباعة، الرسومات الاحترافية |
| DJVU | DjVu | ضياعي | لا | المستندات الممسوحة ضوئيًا، الكتب |
المشكلة؟ أن معظم أنظمة التشغيل والأدوات المضمنة لا تدعم إلا عددًا محدودًا من هذه الصيغ بشكل أصلي. ومن هنا تبدأ الأخطاء.
الخطأ رقم 1: "Windows Photo Viewer Can't Open This Picture" (HEIC/AVIF/WebP)
رموز الأخطاء والرسائل التي قد تراها:
"Windows Photo Viewer can't open this picture because either Photo Viewer
doesn't support this file format, or you don't have the latest updates.""It looks like we don't support this file format."
— Microsoft Photos app"0xc00d5212: This item was encoded in a format that's not supported."لماذا يحدث: لا يدعم Windows 10/11 بشكل أصلي HEIC (صيغة صور iPhone الافتراضية منذ iOS 11) أو AVIF. تحتاج إلى تثبيت "HEIF Image Extensions" (بسعر $0.99) و"AV1 Video Extensions" من Microsoft Store. أما دعم WebP فلم يُضف إلا في Windows 10 الإصدار 1809 وما بعده.
محاولة الإصلاح محليًا: تثبيت حزم codecs، أو استخدام عارضات طرف ثالث، أو تجربة أدوات سطر الأوامر مثل ImageMagick:
magick convert input.heic output.jpgلكن ImageMagick يتطلب تثبيت delegates إضافية (libheif, libde265) وغالبًا ما يفشل ذلك مع:
convert: delegate failed `"dwebp" -pam "%i" -o "%o"' @ error/delegate.c/InvokeDelegate/1911.convert: no decode delegate for this image format `HEIC' @ error/constitute.c/ReadImage/746.الحل السهل: ارفع ملفات HEIC أو AVIF أو WebP إلى GuruPDF وحوّلها إلى JPG أو PNG بنقرة واحدة — بدون codecs، وبدون تثبيتات، وبدون أخطاء.
الخطأ رقم 2: "No Decode Delegate" — نقص codecs في ImageMagick
نص رسالة الخطأ بالكامل:
convert: no decode delegate for this image format `WEBP' @ error/constitute.c/ReadImage/746.convert: no decode delegate for this image format `SVG' @ error/constitute.c/ReadImage/746.convert: no decode delegate for this image format `EPS' @ error/constitute.c/ReadImage/746.لماذا يحدث: يُعد ImageMagick من أشهر أدوات الصور عبر سطر الأوامر، لكنه لا يتضمن مفككات ترميز (decoders) لكل صيغة افتراضيًا. كل صيغة تتطلب مكتبة "delegate":
- WebP يتطلب
libwebp - HEIC يتطلب
libheif+libde265 - AVIF يتطلب
libavif+dav1d - SVG يتطلب
librsvgأو Inkscape - EPS يتطلب Ghostscript (
gs) - DJVU يتطلب
djvulibre
تثبيت هذه الأشياء على Windows مؤلم خصوصًا — إذ تحتاج إلى تنزيل DLLs مُجمّعة مسبقًا، ووضعها في المجلد الصحيح، وتأمل أن تتطابق الإصدارات.
على macOS:
brew install imagemagick --with-librsvg --with-libheif --with-webpوغالبًا ما يفشل مع:
Error: invalid option: --with-librsvgلأن Homebrew غيّر بنية الـ formula وتمت إزالة هذه الخيارات.
على Linux (Ubuntu/Debian):
sudo apt install imagemagick libheif-dev libwebp-devقد يفشل أيضًا لأن ImageMagick في النظام جرى تجميعه بدون delegate. ستحتاج إلى التجميع من المصدر:
./configure --with-heic=yes --with-webp=yes
make && sudo make installوهو ما قد يستغرق أكثر من 10 دقائق وقد يتعارض مع حزم النظام.
الخطأ رقم 3: "Not a JPEG File: Starts With 0x89" — امتداد ملف خاطئ
رسائل الخطأ:
Not a JPEG file: starts with 0x89 0x50Corrupt JPEG data: premature end of data segmentlibpng error: Not a PNG fileIHDR: CRC errorلماذا يحدث: قام شخص ما بإعادة تسمية ملف PNG إلى .jpg (أو بالعكس). امتداد الملف لا يطابق المحتوى الثنائي الحقيقي. البايتات 0x89 0x50 هي رقم سحري (magic number) لـ PNG (أول بايتات كل ملف PNG هي 89 50 4E 47). بينما تبدأ ملفات JPEG بـ FF D8 FF.
يحدث هذا بشكل مفاجئ أكثر مما تتوقع عندما:
- تنزيل الصور من الويب (أحيانًا تضبط الخوادم ترويسات Content-Type بشكل خاطئ)
- إعادة تسمية الملفات على دفعات دون تحويلها فعليًا
- قيام برامج البريد أو تطبيقات المراسلة بتغيير الامتدادات بصمت
كيفية تحديد الصيغة الحقيقية:
file mysterious-image.jpg
# Output: mysterious-image.jpg: PNG image data, 1920 x 1080, 8-bit/color RGBAعلى Windows (PowerShell):
Format-Hex -Path .\image.jpg -Count 4
# If you see 89 50 4E 47, it's actually a PNG
# If you see FF D8 FF, it's a real JPEGميزة التحويل عبر الإنترنت: يكتشف GuruPDF صيغة الملف الفعلية تلقائيًا بغض النظر عمّا يقوله الامتداد، ثم يحوله بشكل صحيح.
الخطأ رقم 4: أخطاء التحويل في Python Pillow (PIL)
رسائل خطأ شائعة:
PIL.UnidentifiedImageError: cannot identify image file 'photo.heic'OSError: cannot write mode RGBA as JPEGOSError: cannot write mode P as JPEGPIL.Image.DecompressionBombError: Image size (178956970 pixels) exceeds limit of 89478485 pixelsلماذا يحدث: مكتبة Pillow في Python هي الخيار الأشهر لتحويل الصور برمجيًا، لكنها تملك قيودًا مهمة:
- لا دعم لـ HEIC بدون
pillow-heif(تثبيت منفصل يتطلب مكتبات النظام) - التحويل من RGBA إلى JPEG يفشل لأن JPEG لا يدعم الشفافية — يجب التحويل إلى RGB أولًا
- وضع اللوحة (P) إلى JPEG يتطلب التحويل إلى RGB
- الصور الكبيرة تُفعّل حماية decompression bomb (ميزة أمنية)
كود التفاف نموذجي يواجه الناس صعوبة معه:
from PIL import Image
img = Image.open("photo.png")
# Handle transparency for JPEG output
if img.mode in ('RGBA', 'LA', 'P'):
background = Image.new('RGB', img.size, (255, 255, 255))
if img.mode == 'P':
img = img.convert('RGBA')
background.paste(img, mask=img.split()[-1])
img = background
img.save("photo.jpg", "JPEG", quality=95)هذا الكثير من الحشو البرمجي لمجرد تحويل صورة واحدة. وما يزال لن يتعامل مع HEIC أو AVIF أو WebP بدون مكتبات إضافية.
الخطأ رقم 5: أخطاء macOS Preview من نوع "Could Not Be Exported"
رسائل الخطأ:
"The document 'image.webp' could not be exported as 'image.png'.""The file isn't compatible with QuickLook.""The document could not be opened. The file format is not supported."لماذا يحدث: يدعم macOS Preview.app نطاقًا جيدًا من الصيغ، لكن إصدارات macOS الأقدم (قبل Ventura) لا تدعم WebP أو AVIF بشكل أصلي. وحتى على الإصدارات الأحدث، قد يفشل التحويل بين بعض تركيبات الصيغ بصمت أو ينتج مخرجات تالفة.
أخطاء شائعة لأمر macOS sips:
sips -s format jpeg input.webp --out output.jpg
# Error: Unable to render input.webp as JPEG
# Error 4: no such operationsips -s format png input.svg --out output.png
# Error: Unable to render SVGأداة sips (Scriptable Image Processing System) مدمجة في macOS لكنها تدعم مجموعة محدودة من الصيغ فقط: JPEG وTIFF وPNG وGIF وBMP وPICT.
الخطأ رقم 6: فشل تحويل الصور عبر FFmpeg
أخطاء شائعة:
[image2 @ 0x...] Could not open file : output.webp
av_interleaved_write_frame(): Invalid argumentAvi/ASF stream 0 is not an image stream. Use -c:v png/mjpeg/... to encode it.[svg @ 0x...] Cannot determine type of input[heic @ 0x...] Unknown decoder 'heic'
Discarding frame which has a bad interlace typeلماذا يحدث: FFmpeg هو بالأساس أداة فيديو، ورغم أنه يمكنه التعامل مع تحويلات الصور، إلا أنه يتطلب دعم codecs محددًا مُضمّنًا عند التجميع. كثير من إصدارات FFmpeg المثبتة على النظام تفتقر إلى دعم HEIC/AVIF/WebP.
الخطأ رقم 7: أخطاء المعالجة الدفعية في GIMP
رسائل خطأ في Script-Fu console:
Error: ( : 1) eval: unbound variable: file-webp-savebatch command experienced an execution error:
Error: Procedure 'file-heif-load' not found(gimp:12345): LibGfig-WARNING **: Bad path: /home/user/.gimp-2.10/gfigلماذا يحدث: يحتاج GIMP إلى إضافات (plugins) للصيغ الأحدث. قد لا تكون إضافة WebP مثبّتة، ودعم HEIF يتطلب libheif، ودعم AVIF يتطلب GIMP 2.10.22+. كما أن المعالجة الدفعية عبر Script-Fu أو Python-Fu تضيف طبقة أخرى من التعقيد.
الخطأ رقم 8: "EXIF Data Lost" — تدمير البيانات الوصفية أثناء التحويل
هذه ليست رسالة خطأ — بل فقدان صامت للبيانات لا يلاحظه كثيرون إلا بعد فوات الأوان.
ما الذي يُفقد:
- إعدادات الكاميرا (فتحة العدسة، سرعة الغالق، ISO)
- إحداثيات GPS (مكان التقاط الصورة)
- التاريخ والوقت اللذان التُقطت فيهما الصورة
- معلومات حقوق النشر
- ملف تعريف الألوان (sRGB, Adobe RGB, ProPhoto RGB)
- الاتجاه (معلومات التدوير — ما يؤدي إلى صور جانبية)
أدوات كثيرًا ما تزيل EXIF:
- Windows Paint (يزيل كل شيء)
- العديد من المحولات عبر الإنترنت (بحجة "الخصوصية" دون إخبارك)
- ImageMagick (يزيل افتراضيًا إلا إذا استخدمت خيار
-stripللتحكم فيه صراحة) - Python Pillow (يتطلب معالجة EXIF بشكل صريح عبر
exif=img.info.get('exif', b''))
مشكلة الاتجاه مزعجة بشكل خاص:
Warning: JPEG file has EXIF orientation tag but image data is not rotated.
Auto-rotating image based on EXIF orientation.بعض الأدوات تدير الصورة لكنها لا تحدّث وسم EXIF، ما يؤدي إلى تدوير مزدوج في بعض العارضات وعرض صحيح في أخرى.
الخطأ رقم 9: مشكلات فضاء الألوان وملفات ICC
رسائل الخطأ:
lcms: not a valid ICC profilecolor profile 'sRGB IEC61966-2.1' is not compatible with 'CMYK'libpng warning: iCCP: known incorrect sRGB profileJCS_CMYK JPEG image passed to JFIF converterلماذا يحدث: غالبًا ما تستخدم الصور الاحترافية فضاءات ألوان CMYK (للطباعة) أو ملفات تعريف واسعة النطاق (Adobe RGB, ProPhoto RGB). تحويلها إلى صيغ ويب (التي تستخدم sRGB) دون إدارة ألوان صحيحة يؤدي إلى ألوان باهتة أو مشبعة بشكل مفرط.
ما تراه: صورة تبدو مثالية على شاشتك تتحول إلى أخضر فاقع أو بني موحل بعد التحويل. أو تفقد صورة احترافية ألوانها الحيوية بالكامل.
السبب التقني: يحتوي CMYK على 4 قنوات لونية (Cyan, Magenta, Yellow, Key/Black) بينما يحتوي RGB على 3 (Red, Green, Blue). التحويل الساذج لا يطبّق التحويل اللوني الصحيح، فينتج ألوانًا غير صحيحة بشكل كبير.
الخطأ رقم 10: أعطال "File Too Large" أو "Out of Memory"
رسائل الخطأ:
java.lang.OutOfMemoryError: Java heap spaceTraceback: MemoryErrorFatal error: Allowed memory size of 134217728 bytes exhaustedconvert: cache resources exhausted `input.tiff' @ error/cache.c/OpenPixelCache/3945.convert: width or height exceeds limit `input.tiff' @ error/cache.c/OpenPixelCache/3912.لماذا يحدث: قد يكون ملف TIFF بحجم 100 MB عند 300 DPI بأبعاد 8000×6000 بكسل. وعند فك ضغطه في الذاكرة يصبح:
- 8000 × 6000 × 4 بايت (RGBA) = 192 MB من RAM لصورة واحدة
- المعالجة (تغيير الحجم، تحويل الصيغة) تتطلب 2-3× هذا المقدار
- تحويل 10 صور من هذا النوع دفعة واحدة قد يستهلك 4-6 GB من RAM
معظم تطبيقات سطح المكتب والسكريبتات لا تعالج الصور بطريقة streaming — بل تحمل الصورة كاملة في الذاكرة دفعة واحدة.
حدود policy الافتراضية في ImageMagick غالبًا ما تكون مقيدة أكثر من اللازم:
# /etc/ImageMagick-6/policy.xml
<policy domain="resource" name="memory" value="256MiB"/>
<policy domain="resource" name="disk" value="1GiB"/>
<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>قد تحتاج إلى تعديل policy.xml لزيادة هذه الحدود، لكن ذلك يتطلب صلاحيات مدير وفهم إعدادات XML.
الخطأ رقم 11: التحويل من SVG إلى Raster — كوابيس "Text Rendering"
مشكلات شائعة:
Pango-WARNING **: failed to choose a font, expect ugly outputrsvg-convert: error: Error reading SVG: "Unexpected end of XML input"cairo-WARNING: cairo_surface_destroy: Cannot modify an already-finished surfaceلماذا يحدث: غالبًا ما تشير ملفات SVG إلى خطوط غير مثبتة على نظامك. عند التحويل إلى PNG أو JPG، يستبدل محرّك العرض الخط بخط افتراضي، ما يغير شكل النص بالكامل. كما أن التدرجات، والفلاتر، والصور المضمنة داخل SVG تضيف نقاط فشل محتملة إضافية.
مثال على مشكلة الخطوط:
يستخدم SVG الخاص بك font-family: "Helvetica Neue"، لكن خادم Linux لديك لا يحتوي إلا على Liberation Sans. تبدو النتيجة خاطئة بشكل طفيف — تباعد مختلف بين الحروف، وأوزان مختلفة، ونص غير محاذٍ.
لماذا يعمل التحويل عبر الإنترنت ببساطة (عندما تفشل الأدوات المحلية)
بعد استعراض كل تلك الأخطاء، قد تتساءل: لماذا تتعامل الأدوات عبر الإنترنت مع هذه التحويلات بهذه السلاسة؟
1. بيئة مُهيأة مسبقًا: تعمل أدوات مثل GuruPDF على خوادم تحتوي على كل codec ومكتبة وdelegate مثبتة ومضبوطة بشكل صحيح. لا libheif مفقودة، ولا سياسة ImageMagick خاطئة، ولا Ghostscript غير موجود.
2. اكتشاف تلقائي للصيغة: يحدد الخادم صيغة الملف الفعلية من ترويسة المحتوى الثنائي (magic bytes)، وليس من امتداد الملف. PNG متنكر بامتداد .jpg؟ لا مشكلة.
3. إدارة ألوان صحيحة: تتعامل الأدوات على الخادم مع ملفات ICC وتحويلات فضاءات الألوان بشكل صحيح، ما يحافظ على المظهر البصري لصورك.
4. إدارة الذاكرة: تمتلك الخوادم السحابية موارد كافية وتعالج الصور بكفاءة، ما يمكّنها من التعامل مع ملفات TIFF الكبيرة وعمليات المسح عالية الدقة دون نفاد الذاكرة.
5. تحديث دائم: يُضاف دعم الصيغ الجديدة مثل AVIF وHEIC على جهة الخادم. لا تحتاج إلى تحديث أي شيء على جهازك.
6. بدون متاعب التثبيت: لا بيئات Python، ولا Homebrew، ولا جحيم DLL، ولا تعديل policy.xml، ولا تجميع من المصدر.
أدوات تحويل الصور في GuruPDF
يدعم GuruPDF نطاقًا واسعًا من تحويلات صيغ الصور، مجانًا وبالاعتماد على المتصفح:
من الصور واللقطات:
- JPG to PNG، JPG to WebP، JPG to SVG، JPG to PDF، JPG to GIF
- PNG to JPG، PNG to WebP، PNG to SVG، PNG to PDF، PNG to GIF
- HEIC to JPG، HEIC to PNG، HEIC to PDF
- AVIF to JPG، AVIF to PNG، AVIF to PDF
- WebP to JPG، WebP to PNG، WebP to GIF، WebP to PDF
- TIFF to JPG، TIFF to PNG، TIFF to PDF
- BMP to JPG، BMP to PNG، BMP to PDF
- GIF to PNG، GIF to WebP، GIF to PDF
الصيغ المتجهية والمتخصصة:
أدوات التحسين:
- Resize Image (أي صيغة)
- Optimize JPG، Optimize PNG، Optimize GIF
- Grayscale PDF
الخلاصة: توقّف عن مقاتلة جهازك
إذا سبق أن قضيت 30 دقيقة تحاول تثبيت libheif على Windows، أو تساءلت لماذا يبدو TIFF بنمط CMYK أخضر بعد تحويله إلى JPG، أو ارتبكت بسبب خطأ "no decode delegate" — فأنت لست وحدك. تحويل الصور يجب أن يكون بسيطًا، لكن الأدوات المحلية تجعله معقدًا بلا داعٍ.
في المرة القادمة التي تحتاج فيها إلى تحويل صورة، جرّب رفعها إلى GuruPDF أولًا. فهو يتعامل مع كل الصيغ، ويحافظ على الجودة، ويعمل في أي متصفح وعلى أي جهاز. بلا تثبيتات، بلا رموز أخطاء، بلا إحباط.
وقتك أفضل أن يُصرف على عملك الحقيقي، لا على تتبّع delegates الخاصة بـ ImageMagick.