تعلم JavaFx ..مقال35_التعامل مع الصور_ الكلاس ImageView & Image
صفحة 1 من اصل 1 • شاطر
تعلم JavaFx ..مقال35_التعامل مع الصور_ الكلاس ImageView & Image
أهلا بكم
هذا المقال سنتعلم سويا كيفية التعامل مع الصور فى تطبيقات JavaFX ، وكيفية عرض الصورة في نافذة تطبيقك وكيفية تغيير وحدات البكسل الخاصة بالصورة.
الخطوة الاولى : إستخدام الفئة Image لتحميل الصورة الى تطبيقك
يتوفر JavaFX في الحزمة javafx.scene.image الفئة Image لقراءة وتحميل الصور الى تطبيقك وتدعم الكثير من تنسيقات الصور مثل Bmp و Gif و Jpeg و Png.
وتستخدم في تحميل الصور أما من عنوان URL محدد.أو من تدفق الكائن InputStream وذلك على النحو التالى :
أولا : إنشاء صورة من عنوان URL محدد .
حيث أن :
مثال : تحميل صورة من عنوان url مع تعديل حجمها الى 100*150 بيكسل بدون الحفاظ على نسبة عرضها للارتفاع الاصلي وعدم الحفاظ على جودتها الاصلية
مثال : تحميل صورة من مجلد التطبيق classpath ...إذا لم تكن السلسلة التي تم تمريرها عنوان URL صالحًا ، ولكن مسارًا بدلاً من ذلك ، فسيتم البحث عن الصورة في classpath في هذه الحالة على النحو التالى
مثال : تحميل الصورة من حزمة معينة ....توجد الصورة في حزمة my.res من مسار classpath
مثال :تحميل الصورة من مجلد العمل الحالى
ثانيا : إنشاء صورة مع المحتوى الذي تم تحميله من تدفق الإدخال المحدد....ثم تمرير التدفق الى كائن Image
مثال :تحميل صورة من مسار محدد باستخدام طريقة التدفق InputStream ثم تمرير التدفق الى كائن الصورة
الخطوة الثانية : إستخدام الفئة ImageView لعرض الصورة على ناذة تطبيقك
بعد أن قمنا بتحميل الصورة من خلال الفئة Image باى طريقة كما اوضحنا اعلاه ، يمكنك عرض الصورة على ناقذة تطبيقك عن طريق إنشاء فئة ImageView وتمرير الصورة إلى منشئها كما يلي -
مثال كامل :
النتيجة على النحو التالى :
هذا المقال سنتعلم سويا كيفية التعامل مع الصور فى تطبيقات JavaFX ، وكيفية عرض الصورة في نافذة تطبيقك وكيفية تغيير وحدات البكسل الخاصة بالصورة.
خطوات التعامل مع الصور فى تطبيقك :
الخطوة الاولى : إستخدام الفئة Image لتحميل الصورة الى تطبيقك
يتوفر JavaFX في الحزمة javafx.scene.image الفئة Image لقراءة وتحميل الصور الى تطبيقك وتدعم الكثير من تنسيقات الصور مثل Bmp و Gif و Jpeg و Png.
وتستخدم في تحميل الصور أما من عنوان URL محدد.أو من تدفق الكائن InputStream وذلك على النحو التالى :
أولا : إنشاء صورة من عنوان URL محدد .
- الكود:
public Image(String url,
double requestedWidth,
double requestedHeight,
boolean preserveRatio,
boolean smooth,
boolean backgroundLoading)
حيث أن :
- url : السلسلة التي تمثل عنوان URL المراد استخدامه في جلب بيانات البكسل
- requestWidth - عرض مربع الصورة المحيط
- requiredHeight - ارتفاع المربع المحيط للصورة
- preserveRatio - يشير إلى ما إذا كان سيتم الحفاظ على نسبة العرض إلى الارتفاع للصورة الأصلية عند تغيير الحجم لملاءمة الصورة داخل المربع المحيط المحدد
- smooth : تشير إلى ما إذا كنت ستحافظ على جودة الصورة اثناء تغير حجمها ام لا
- backgroundLoading - يشير إلى ما إذا كان يتم تحميل الصورة في الخلفية
مثال : تحميل صورة من عنوان url مع تعديل حجمها الى 100*150 بيكسل بدون الحفاظ على نسبة عرضها للارتفاع الاصلي وعدم الحفاظ على جودتها الاصلية
- الكود:
Image image3 = new Image("http://sample.com/res/flower.png", 100, 150, false, false);
مثال : تحميل صورة من مجلد التطبيق classpath ...إذا لم تكن السلسلة التي تم تمريرها عنوان URL صالحًا ، ولكن مسارًا بدلاً من ذلك ، فسيتم البحث عن الصورة في classpath في هذه الحالة على النحو التالى
- الكود:
Image image1 = new Image("/flower.png"
);
مثال : تحميل الصورة من حزمة معينة ....توجد الصورة في حزمة my.res من مسار classpath
- الكود:
Image image2 = new Image("my/res/flower.png");
مثال :تحميل الصورة من مجلد العمل الحالى
- الكود:
Image image4 = new Image("file:flower.png");
ثانيا : إنشاء صورة مع المحتوى الذي تم تحميله من تدفق الإدخال المحدد....ثم تمرير التدفق الى كائن Image
- الكود:
Image(InputStream is)
مثال :تحميل صورة من مسار محدد باستخدام طريقة التدفق InputStream ثم تمرير التدفق الى كائن الصورة
- الكود:
FileInputStream inputstream = new FileInputStream("C:\\images\\image.jpg");
Image image = new Image(inputstream);
الخطوة الثانية : إستخدام الفئة ImageView لعرض الصورة على ناذة تطبيقك
بعد أن قمنا بتحميل الصورة من خلال الفئة Image باى طريقة كما اوضحنا اعلاه ، يمكنك عرض الصورة على ناقذة تطبيقك عن طريق إنشاء فئة ImageView وتمرير الصورة إلى منشئها كما يلي -
- الكود:
ImageView imageView = new ImageView(image);
مثال كامل :
- الكود:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class ImageExample extends Application {
@Override
public void start(Stage stage) throws FileNotFoundException {
//Creating an image
Image image = new Image(new FileInputStream("path of the image"));
//Setting the image view
ImageView imageView = new ImageView(image);
//Setting the position of the image
imageView.setX(50);
imageView.setY(25);
//setting the fit height and width of the image view
imageView.setFitHeight(455);
imageView.setFitWidth(500);
//Setting the preserve ratio of the image view
imageView.setPreserveRatio(true);
//Creating a Group object
Group root = new Group(imageView);
//Creating a scene object
Scene scene = new Scene(root, 600, 500);
//Setting title to the Stage
stage.setTitle("Loading an image");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
النتيجة على النحو التالى :
عدل سابقا من قبل زهراء في الجمعة أكتوبر 26, 2018 9:22 am عدل 1 مرات
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: تعلم JavaFx ..مقال35_التعامل مع الصور_ الكلاس ImageView & Image
قرءة وحدات البيكسل و التعديل على الصور
يوفر JavaFX فئة تسمي PixelReader و اخرى تسمي PixelWriter لقراءة وحدات البكسل الخاصة بالصورة وكتابتها. يتم استخدام فئة WritableImage لإنشاء صورة قابلة للكتابة.
فيما يلي مثال يوضح كيفية قراءة وحدات البكسل للصورة وكتابتها. هنا ، نقرأ قيمة لون صورة ما ونجعلها أكثر قتامة.
النتيجة
يوفر JavaFX فئة تسمي PixelReader و اخرى تسمي PixelWriter لقراءة وحدات البكسل الخاصة بالصورة وكتابتها. يتم استخدام فئة WritableImage لإنشاء صورة قابلة للكتابة.
فيما يلي مثال يوضح كيفية قراءة وحدات البكسل للصورة وكتابتها. هنا ، نقرأ قيمة لون صورة ما ونجعلها أكثر قتامة.
- الكود:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelReader;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class WritingPixelsExample extends Application {
@Override
public void start(Stage stage) throws FileNotFoundException {
//Creating an image
Image image = new Image(new FileInputStream("C:\\images\\logo.jpg"));
int width = (int)image.getWidth();
int height = (int)image.getHeight();
//Creating a writable image
WritableImage wImage = new WritableImage(width, height);
//Reading color from the loaded image
PixelReader pixelReader = image.getPixelReader();
//getting the pixel writer
PixelWriter writer = wImage.getPixelWriter();
//Reading the color of the image
for(int y = 0; y < height; y++) {
for(int x = 0; x < width; x++) {
//Retrieving the color of the pixel of the loaded image
Color color = pixelReader.getColor(x, y);
//Setting the color to the writable image
writer.setColor(x, y, color.darker());
}
}
//Setting the view for the writable image
ImageView imageView = new ImageView(wImage);
//Creating a Group object
Group root = new Group(imageView);
//Creating a scene object
Scene scene = new Scene(root, 600, 500);
//Setting title to the Stage
stage.setTitle("Writing pixels ");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
النتيجة
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
| |
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 1:38 pm من طرف moslema_r
» تصميم تطبيق جوال لمغسلة ملابس
الخميس سبتمبر 05, 2024 7:22 am من طرف mona mohamed
» تصميم تطبيق جوال لشركة عقارات
الأربعاء سبتمبر 04, 2024 11:34 am من طرف mona mohamed
» شركة مكافحة النمل الابيض بالرياض
الثلاثاء سبتمبر 03, 2024 7:04 pm من طرف moslema_r
» تصميم تطبيق جوال لنقل الاثاث
الإثنين سبتمبر 02, 2024 12:08 pm من طرف mona mohamed
» هناجر
السبت أغسطس 31, 2024 7:25 pm من طرف moslema_r
» تصميم تطبيق جوال لمتجر ورد
الخميس أغسطس 29, 2024 7:16 am من طرف mona mohamed
» تصميم تطبيق جوال لسلسلة مطاعم
الثلاثاء أغسطس 27, 2024 7:42 am من طرف mona mohamed
» تصميم تطبيق جوال لتوصيل الطلبات
الأحد أغسطس 25, 2024 7:38 am من طرف mona mohamed
» مظلات سيارات متحركة
الخميس أغسطس 22, 2024 8:30 pm من طرف moslema_r