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

[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
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة : مصر
الجنس : انثى

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

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

مُساهمة من طرف أحمد مناع الأحد مارس 20, 2022 7:10 pm

يرجي تكملة باقى الدروة يا استاذة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] 

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

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

https://egy-tech.forumegypt.net

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

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

ََ

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


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