يُستخدم برنامج Java بشكل شائع لعرض الصور المخزنة في ملفات GIF. من السهل جدًا تحميل صور GIF في تطبيق Java الصغير. عند استخدام ملفات الصور في التطبيق الصغير، تحتاج إلى تحديد كائن الصورة. تستخدم معظم تطبيقات Java ملفات الصور بتنسيق GIF أو JPEG. يستخدم التطبيق الصغير طريقة getImage لربط ملف الصورة بكائن الصورة.
يتم استخدام أسلوب drawImage لفئة الرسومات لعرض كائنات الصورة. من أجل تحسين تأثير عرض الصور، تستخدم العديد من التطبيقات تقنية التخزين المؤقت المزدوج: قم أولاً بتحميل الصورة في الذاكرة، ثم قم بعرضها على الشاشة.
يمكن للتطبيق الصغير تحديد مقدار الصورة الموجودة بالفعل في الذاكرة من خلال طريقة imageUpdate.
تحميل صورة
تتعامل Java مع الصور على أنها كائنات صور، لذا عند تحميل صورة، يجب عليك أولاً تحديد كائن الصورة، ويكون التنسيق كما يلي:
صورة الصورة،
ثم استخدم طريقة getImage لتوصيل كائن الصورة وملف الصورة:
photo=getImage(getCodeBase() ),"ImageFileName.GIF");
تحتوي طريقة getImage على معلمتين. المعلمة الأولى هي استدعاء الأسلوب getCodeBase، الذي يُرجع عنوان URL الخاص بالتطبيق الصغير، مثل www.sun.com/Applet . تحدد المعلمة الثانية اسم ملف الصورة المراد تحميله من عنوان URL. إذا كان ملف الصورة موجودًا في دليل فرعي ضمن التطبيق الصغير، فيجب تضمين مسار الدليل المقابل في اسم الملف.
بعد تحميل الصورة باستخدام طريقة getImage، يمكن للتطبيق الصغير استخدام طريقة drawImage لفئة الرسومات لعرض الصورة كما يلي:
g.drawImage(
Picture,x,y,this);
تحديد الصورة المراد عرضها بإحداثيات x و y للزاوية اليسرى العليا من الصورة وهذا.
الغرض من المعلمة الرابعة هو تحديد كائن يقوم بتنفيذ واجهة ImageObServer، أي كائن يحدد طريقة imageUpdate (ستتم مناقشة هذه الطريقة لاحقًا).
عرض الصورة (ShowImage.java)
// قائمة البرامج المصدر
import java.awt.*;
import java.applet.*;
الطبقة العامة ShowImage تمتد إلى التطبيق الصغير
صورة الصورة؛ // تحديد متغيرات الأعضاء من النوع Image
الحرف الأول الفراغي العام ()
{
photo=getImage(getCodeBase(),"Image.gif"); //تحميل الصورة
}
طلاء الفراغ العام (الرسومات ز)
{
g.drawImage(picture,0,0,this); //عرض الصورة
}
}
لهذا السبب، تكون العبارات حول التطبيق الصغير في ملف HTML كما يلي:
<HTML>
<العنوان>إظهار التطبيق الصغير للصورة</TITLE>
< التطبيق الصغير
CODE = "ShowImage.class" // اسم ملف الفصل هو ShowImage.class
العرض = 600
الارتفاع = 400>
</التطبيق الصغير>
</HTML>
عند تشغيل التطبيق الصغير بعد التجميع، لا تكون الصورة دفعة واحدة. وذلك لأن البرنامج لا يقوم بتحميل الصورة وعرضها بالكامل قبل إرجاع طريقة drawImage. في المقابل، تقوم طريقة drawImage بإنشاء مؤشر ترابط يتم تنفيذه بشكل متزامن مع مؤشر ترابط التنفيذ الأصلي للتطبيق الصغير، ويتم تحميله وعرضه في نفس الوقت، مما يؤدي إلى إنشاء هذا الانقطاع. من أجل تحسين تأثير العرض. تستخدم العديد من التطبيقات الصغيرة تقنية التخزين المؤقت المزدوج للصور، أي أنه يتم تحميل الصورة بالكامل في الذاكرة ثم عرضها على الشاشة، بحيث يمكن عرض الصورة دفعة واحدة.
التخزين المؤقت المزدوج للصور
من أجل تحسين تأثير عرض الصور، يجب استخدام تقنية التخزين المؤقت المزدوج. يتم تحميل الصورة أولاً في الذاكرة ثم يتم عرضها في نافذة التطبيق الصغير.
مثال على استخدام تقنية التخزين المؤقت للصور المزدوجة (BackgroundImage.java)
// قائمة البرامج المصدر
import java.awt.*;
import java.applet.*;
تعمل صورة الخلفية للطبقة العامة على توسيع التطبيق الصغير // وراثة التطبيق الصغير
{
صورة الصورة؛
Boolean ImageLoaded=false;
الحرف الأول الفراغي العام ()
{
photo=getImage(getCodeBase(),"Image.gif"); // تحميل صورة الصورة offScreenImage=createImage(size().width,size().height);
// إنشاء رسومات كائن الصورة باستخدام الطريقة createImage offScreenGC=offScreenImage.getGraphics(); // الحصول على كائن الرسومات offScreenGC.drawImage(picture,0,0,this);
طلاء الفراغ العام (الرسومات ز)
{
إذا (تم تحميل الصورة)
{
g.drawImage(picture,0,0,null); // عرض الصورة، المعلمة الرابعة فارغة، وليس هذا
showStatus("تم");
}
آخر
showStatus("تحميل الصورة");
}
تحديث الصورة المنطقية العامة (Image img,int infoflags,int x,int y,int w,int h)
{
إذا (infoflags= =ALLBITS)
{
imageLoaded=true;
إعادة رسم();
عودة كاذبة.
}
آخر
عودة صحيحة؛
}
}
يُظهر تحليل أسلوب init الخاص بالتطبيق الصغير أن الطريقة تحدد أولاً كائن صورة يسمى offScreenImage وتعين له القيمة المرجعة لأسلوب createImage، ثم تقوم بإنشاء كائن رسومي يسمى offScreenGC وتعين له بيئة رسومية - غير شاشة سيتم إنتاج الصورة من خلالها. نظرًا لأنه تم رسم الصورة الموجودة على الشاشة هنا، فلن تكون هناك صورة معروضة في نافذة التطبيق الصغير.
عندما يستدعي التطبيق الصغير أسلوب drawImage، فسيقوم drawImage بإنشاء مؤشر ترابط يستدعي أسلوب imageUpdate. يمكن للتطبيق الصغير تحديد مقدار الصورة التي تم تحميلها في الذاكرة باستخدام طريقة imageUpdate. يستمر مؤشر الترابط الذي تم إنشاؤه بواسطة drawImage في استدعاء طريقة imageUpdate حتى تُرجع الطريقة خطأ.
تتيح علامات معلومات المعلمة الثانية لأسلوب imageUpdate للتطبيق الصغير معرفة كيفية تحميل الصورة في الذاكرة. هذه المعلمة تساوي ImageLoaded وتم تعيينها على true ويتم استدعاء أسلوب إعادة الرسم لإعادة رسم نافذة التطبيق الصغير. تقوم هذه الطريقة في النهاية بإرجاع خطأ لمنع مؤشر ترابط تنفيذ drawImage من استدعاء طريقة imageUpdate مرة أخرى.
يتم التحكم في تشغيل التطبيق الصغير في طريقة الطلاء بواسطة المتغير ImageLoaded. عندما يصبح هذا المتغير صحيحًا، تستدعي طريقة الطلاء طريقة drawImage لعرض الصورة. عندما تستدعي طريقة الطلاء طريقة drawImage، فإنها تأخذ قيمة null كمعلمة رابعة، مما يمنع drawImage من استدعاء طريقة imageUpdate. نظرًا لأنه تم تحميل الصورة في الذاكرة في هذا الوقت، فيمكن إكمال عرض الصورة في نافذة التطبيق الصغير دفعة واحدة.