معالجة الصور فى الجافا...2_الحصول و ضبط وحدات البكسل

اذهب الى الأسفل

معالجة الصور فى الجافا...2_الحصول و ضبط وحدات البكسل  Empty معالجة الصور فى الجافا...2_الحصول و ضبط وحدات البكسل

مُساهمة من طرف زهراء في الجمعة سبتمبر 13, 2019 10:11 pm

اهلا وسهلا بكم 

فى مقال سابق تحدثنا عن كيفية قراءة و كتابة الصور وتخزيها فى ذاكرة الوصول العشوائى للحاسوب Ram 

في هذا المقال ، سنتعرف على بكسلات الصورة.و كيف يمكننا الحصول على قيم بكسل للصورة أو كيفية تعيين قيم بكسل في صورة باستخدام لغة برمجة Java...وقبل أن نبدء دعونا نتعرف على ماهى البيكسلات ؟

البيكسلات هي أصغر وحدة في الصورة تتكون من أربعة مكونات :

1_المكون ألفا _بالانجليزية Alpha _وهو مقياس الشفافية
2_المكون الأحمر وهو مقياس لدرجة اللون الاحمر
3_المكون الأخضر وهو مقياس لدرجة اللون الاخضر
4_المكونالأزرق وهو مقياس لدرجة اللون الازرق

و تختصر كل هذه المكونات بالرمز (ARGB). كل مكون له قيم رقمية و تنحصر جميع القيم الرقيمة لجميع المكونات ما بين 0 و 255 . الصفر يعني أن المكون غائب أو لا جود له و 255 يعني أن المكونات موجودة بالكامل....


ملحوظة:
نظرًا لأن 2^8 = 256  وقيمة مكونات البكسل تقع بين 0 و 255 ، لذلك نحن بحاجة فقط إلى 8 بت لتخزين القيم.لذلك إجمالي عدد البتات المطلوبة لتخزين قيم ARGB هو 8 * 4 = 32 بت أو 4 بايت.
معالجة الصور فى الجافا...2_الحصول و ضبط وحدات البكسل  Image-processing-in-java
نظرًا لأن الترتيب يدل على أن Alpha تحصل على أقصى 8 بتات ، فإن Blue يكتسب أدني 8 بتات. بالتالي فان قيم كل مكون على النحو التالى :

_قيم المكون الازرق 0_7
_قيم المكون الاخضر 8_15
_قيم المكون الاحمر 16_23
_ قيم المكون الفا 24_31

وبما اننا تعرفنا على بكسلات الصور يمكن تغير هذه القيم لتعديل درجات الوان الصور ودرجة شفافتها وخلافة وسنتعلم ذلك فى مقالات لاحقة لكن هذا المقال سنكتفى بكيفة الحصول على بسكيلات صورة و تعيين بيسكلات اخرى 

_للحصول على قيمة إجمالى وحدات البيكسل باستخدام الشفرة التالية :


الكود:
Color c = new Color(image.getRGB(j, i));

أو على النحو التالى :


الكود:
int p = img.getRGB( j , i );


_للحصول على قيم كل مكون على حدة ...يمكن إستخدام الطريقة getRGB على النحو التالي:

الكود:

c.getRed();
c.getGreen();
c.getBlue();



الكود:
import java.io.File;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class GetSetPixels
{
   public static void main(String args[])throws IOException
   {
      BufferedImage img = null;
      File f = null;

      //قراءة الصورة
      try
      {
         f = new File("G:\\Inp.jpg");
         img = ImageIO.read(f);
      }
      catch(IOException e)
      {
         System.out.println(e);
      }

      //الحصول على حجم الصورة
      int width = img.getWidth();
      int height = img.getHeight();

           int count = 0;
        
         for(int i=0; i<height; i++) {
        
            for(int j=0; j<width; j++) {
            
               count++;
               Color c = new Color(image.getRGB(j, i));
               System.out.println("S.No: " + count + " Red: " + c.getRed() +"  Green: " + c.getGreen() + " Blue: " + c.getBlue());
            }
         }

      
الكود:
      // لتعين وحدات بكسل للصورة
      */
      a = 255;
      r = 100;
      g = 150;
      b = 200;

      //set the pixel value
      p = (a<<24) | (r<<16) | (g<<8) | b;
      img.setRGB(0, 0, p);

      //write image
      try
      {
         f = new File("G:\\Out.jpg");
         ImageIO.write(img, "jpg", f);
      }
      catch(IOException e)
      {
         System.out.println(e);
      }
   }
}

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

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

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

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


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