كيفية تصوير سطح المكتب و النوافذ النشطة screenshot وحفظها بصيغة png فى تطبيقات الجافا

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

كيفية تصوير سطح المكتب و النوافذ النشطة screenshot وحفظها بصيغة png فى تطبيقات الجافا

مُساهمة من طرف أحمد مناع في الأربعاء يناير 15, 2014 1:24 pm

بسم الله الرحمن الرحيم


أهلا وسهلا بكم إخوانى .....فغالبا تكون مضطر أن تأخذ لقطات من سطح مكتب المستخدم وتطبيقات الرسومات (مثل فوتوشوب)، وحتى عند كتابة مقالات لمنتدى مصر التقنى التي تتطلب صور فى الشرح ...لذلك فإن هذا المقال سيكون عن كيفية أخذ لقطة من سطح مكتب المستخدم أو أحد النوافذ النشطة من خلال تطبيقات الجافا و الدرس سهل و بسيط للغاية إن شاء الله تعالى :

1_ أخذ لقطة أو صورة بتحديد جزء من الشاشة


  • لكى تأخذ لقطة من سطح مكتب المستخدم بلغة جافا عامة يتم ذلك من خلال إنشاء مثيل جديد من الفئة java.awt.Robot، واستخدام الأسلوب createScreenCapture وذلك على النحو التالى :


الرمز:
Robot robot = new Robot();
   Rectangle captureSize = new Rectangle(0, 0, 300, 300);

_ويرجى ملاحظة أن الاسلوب Rectangle يتطلب 4 معطيات هما x,y والتى عبرت عنهم فى الكود أعلاه بالقيمة صفر و يستخدمان فى تحديد المكان الذى اريد ان أخذ منه لقطة من على الشاشة ....وبما اننى عبرت عنهم بالقيمة صفر فمعنى ذلك اننى ساقوم باخذ لقطة من اعلى يسار الشاشة ....

_ و الاخرين هما width,height والتى عبرت عنهم فى الكود أعلاه بالقيمة 300 و هما يحددان حجم الصورة ...ومعنى ذلك اننى سأقوم باخذ صورة بحجم 300*300 بيكسل


  • بعد ذلك سنقوم باستخدام الكائن BufferedImage لتخزين اللقطة التى تم أخذها به على النحو التالى :


الرمز:
BufferedImage bufferedImage = robot.createScreenCapture(captureSize);


  • بعد ذلك سنقوم باستخدام الكائن File لانشاء كائن صورة من نوع png وذلك على النحو التالى :


الرمز:
File screenshotFile = new File("./creenshot-"+System.currentTimeMillis()+".png");


  • بعد ذلك سنقوم بأستخدام الكائن ImageIO لكتابة كائن الصورة على القرص الصلب و حفظة على النحو التالى :


الرمز:
ImageIO.write(bufferedImage, "png",screenshotFile);

و الكود الكامل لاخذ جزء من سطح مكتب المستخدم على النحو التالى :

الرمز:

package b;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;


public class B {

  
    public static void main(String[] args) throws IOException {
      
      try {
        Robot robot = new Robot();
   Rectangle captureSize = new Rectangle(0, 0, 300, 300);
        BufferedImage bufferedImage = robot.createScreenCapture(captureSize);
        
          File screenshotFile = new File("./creenshot-"+System.currentTimeMillis()+".png");
        ImageIO.write(bufferedImage, "png",screenshotFile);
    }
    catch(AWTException e) {
       System.err.println("Something fishy is going on...");
    }
    }
}

2_ أخذ لقطة كاملة لشاشة المستخدم

يمكنك تصوير سطح المكتب كاملا للمستخدم من خلال الفئة java.awt.Toolkit و استخدام الاسلوب getDefaultToolkit وذلك على النحو التالى :

الرمز:
Robot robot = new Robot();
   Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
        BufferedImage bufferedImage = robot.createScreenCapture(captureSize);

و الكود الكامل على النحو التالى :

الرمز:

package b;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;


public class B {

  
    public static void main(String[] args) throws IOException {
      
      try {
        Robot robot = new Robot();
   Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
        BufferedImage bufferedImage = robot.createScreenCapture(captureSize);
        
          File screenshotFile = new File("./creenshot-"+System.currentTimeMillis()+".png");
        ImageIO.write(bufferedImage, "png",screenshotFile);
    }
    catch(AWTException e) {
       System.err.println("Something fishy is going on...");
    }
    }
}

3_ تصوير النوافذة النشطة فقط

يمكنك تصوير النوافذ النشطة فقط من خلال الفئة GraphicsDevice و الفئة MouseInfo وذلك على النحو التالى :

الرمز:
 Robot robot = new Robot();
   GraphicsDevice currentDevice = MouseInfo.getPointerInfo().getDevice();
   BufferedImage bufferedImage = robot.createScreenCapture(currentDevice
               .getDefaultConfiguration().getBounds());

و الكود الكامل لتصوير النوافذ النشطة فقط على النحو التالى :

الرمز:

package b;

import java.awt.AWTException;
import java.awt.GraphicsDevice;
import java.awt.MouseInfo;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;


public class B {

  
    public static void main(String[] args) throws IOException {
      
      try {
        Robot robot = new Robot();
   GraphicsDevice currentDevice = MouseInfo.getPointerInfo().getDevice();
   BufferedImage bufferedImage = robot.createScreenCapture(currentDevice
               .getDefaultConfiguration().getBounds());
        
          File screenshotFile = new File("./creenshot-"+System.currentTimeMillis()+".png");
        ImageIO.write(bufferedImage, "png",screenshotFile);
    }
    catch(AWTException e) {
       System.err.println("Something fishy is going on...");
    }
    }
}


شكرا لكم و اللى اللقاء فى درس جديد إن شاء الله تعالى

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كيفية تصوير سطح المكتب و النوافذ النشطة screenshot وحفظها بصيغة png فى تطبيقات الجافا

مُساهمة من طرف زهراء في السبت أبريل 05, 2014 8:43 am

جزاكم الله خيرا اخى و استاذى

زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى