[Java] معالجة الصور فى الجافا...3_تحويل صورة ملونة إلى صورة ذات تدرجات رمادية

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

[Java] معالجة الصور فى الجافا...3_تحويل صورة ملونة إلى صورة ذات تدرجات رمادية Empty [Java] معالجة الصور فى الجافا...3_تحويل صورة ملونة إلى صورة ذات تدرجات رمادية

مُساهمة من طرف زهراء في السبت سبتمبر 14, 2019 6:35 pm

اهلا بكم 

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

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


  • نقوم بالحصول على قيمة RGB من بكسل.
  • نقوم بحساب المتوسط الحسابى لقيم ​​RGB أي أن، Avg = (R + G + B) / 3
  • نقوم باستبدل قيمة R و G و B للبكسل بمتوسط ​​(Avg) المحسوب في الخطوة 2.
  • نكرر الخطوة 1 إلى الخطوة 3 لكل بكسل من الصورة.



و الشفرة على النحو التالى :
الكود:

// Java program to demonstrate colored to greyscale conversion
import java.io.File;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class Grayscale
{
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();

// حلقة تكرارية  
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
//
int p = img.getRGB(x,y);

int a = (p>>24)&0xff;
int r = (p>>16)&0xff;
int g = (p>>8)&0xff;
int b = p&0xff;

// calculate average
int avg = (r+g+b)/3;

// replace RGB value with avg
p = (a<<24) | (avg<<16) | (avg<<8) | avg;

img.setRGB(x, y, 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
المساهمات : 406
النقاط : 691
التقيم : 55
الدولة : مصر
الجنس : انثى

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

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

ََ

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


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