استخراج إطارات GIF
استخرج الإطارات الكاملة المركبة من GIF محليًا، ونزّل إطارًا بصيغة PNG أو كل الإطارات مع بياناتها في ZIP.
طريقة الاستخدام
اختر الملف والسياسة ثم اضغط استخراج الإطارات. اختر رقم الإطار لمعاينة الصورة الكاملة الثابتة، واقرأ المدة الخام والإزالة في الجدول. نزّل PNG المختار أو ZIP لكل الإطارات. تغيير الملف أو الخلفية يمحو النتيجة القديمة. لا رفع أو تخزين تلقائي، والملف الأصلي لا يتغير.
إذا رسم إطار أول الشاشة باللون الأحمر ثم رسم الثاني مربعًا أخضر صغيرًا، يحتوي PNG الثاني الشاشة الحمراء والمربع معًا، لا المربع وحده. عند الإزالة 2 تعاد منطقة الإطار السابق إلى خلفية GIF المنطقية أو الشفافية بحسب اختيارك؛ لذلك قد تختلف النتيجتان. الإزالة 3 تستعيد البكسلات السابقة قبل رسم الإطار التالي.
حدود الدعم
دعم محدود لـ GIF87a/89a ولوحات ألوان عامة ومحلية وinterlace وشفافية وإزالة 0–3. تُرفض Plain Text وطلب إدخال المستخدم ونسبة البكسل غير الصفرية والامتدادات المجهولة وطرق الإزالة 4–7 وأوامر التحكم المكررة أو المعلقة؛ تقبل NETSCAPE2.0 سليمة واحدة. التعليقات مقيدة ثم متجاهلة. metadata.json يحفظ version=1 والأبعاد والسياسة وrepeatCount الخام وأسماء PNG ومددها الخام بالـcentiseconds وإزالتها. null يعني غياب القيمة، والصفر محفوظ: delay=0 لا يتحول إلى 100 ms، وrepeatCount=0 يعني التكرار غير المحدود في امتداد NETSCAPE دون تكرار بيانات الإطارات. لا تشغيل للرسوم المتحركة أو حفظ لكل بايتات المصدر. أسماء الملفات ثابتة وZIP من نوع STORE دون ضغط. PNG يخرج عبر Canvas الأصلي؛ اختبارات البكسلات لا تعني حفظ بايتات PNG نفسها بين المتصفحات.
أسئلة شائعة
لماذا قد تبقى الجلسة مشغولة بعد الإلغاء؟
FileReader قابل للإيقاف والعامل قابل للإنهاء، لكن callback ترميز PNG الأصلي لا يمكن قتله. يُرفض ناتجه المتأخر وتبقى الجلسة المشتركة محجوزة حتى تحرير Canvas؛ لا تبدأ عملية أخرى فوق المورد المتأخر. أعد المحاولة بعد انتهائه. قد تتأخر استجابة المهلة عند تعليق المتصفح. حدود البايتات والبكسلات والعمل لا تمثل قياسًا أو ضمانًا لكل ذاكرة المتصفح.