[Java] معالجة الصور فى الجافا...3_تحويل صورة ملونة إلى صورة ذات تدرجات رمادية
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: التعامل مع الرسومات Java 2D/3D Graphics
صفحة 1 من اصل 1 • شاطر
[Java] معالجة الصور فى الجافا...3_تحويل صورة ملونة إلى صورة ذات تدرجات رمادية
اهلا بكم
تحدثنا فى مقال سابق عن وحدات البكسل و كيف يمكننا الحصول على قيم بكسل للصورة أو كيفية تعيين قيم بكسل في صورة باستخدام لغة برمجة Java ...أما فى هذا المقال سنتحدث عن كيفية استخدام وحدات البكسل لتعين وتغير الوان الصورة بدرجات مختلفة
ففى هذا المثال سنقوم بتحويل صورة ملونة إلى صورة ذات تدرجات رمادية.
معني ذلك أن المكون Alpha للصورة هو نفس الصورة الأصلية ولن يتم تغير فية شىء، ولكن سيتم تغيير ملف RGB ، أي أن جميع مكونات RGB الثلاثة سيكون لها نفس القيمة لكل بكسل ويتم ذلك على النحو التالى :
و الشفرة على النحو التالى :
تحدثنا فى مقال سابق عن وحدات البكسل و كيف يمكننا الحصول على قيم بكسل للصورة أو كيفية تعيين قيم بكسل في صورة باستخدام لغة برمجة 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_تحويل صورة ملونة إلى صورة ذات تدرجات رمادية
يرجي تكملة باقى الدروة يا استاذة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: التعامل مع الرسومات Java 2D/3D Graphics
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 7:09 pm من طرف moslema_r
» شركة تنظيف فرشات بالرياض
الثلاثاء مارس 26, 2024 6:26 pm من طرف moslema_r
» شركة تنظيف استراحات بالرياض
الأحد مارس 24, 2024 10:49 pm من طرف moslema_r
» كشف تسربات المياه في جدة
السبت مارس 23, 2024 7:23 pm من طرف gmalnagy
» خدمات كشف تسربات المياه بخصم 25% - اتصل الان
السبت مارس 23, 2024 7:22 pm من طرف gmalnagy
» شركة تنظيف ثريات بالرياض
الخميس مارس 21, 2024 7:23 pm من طرف moslema_r
» كهربائي منازل بالرياض
الأحد مارس 17, 2024 1:52 pm من طرف رانيا حماد
» افضل شركة نقل عفش بالرياض نقل باكستاني 40% خصم | موقع الانوار
الأحد مارس 17, 2024 1:25 pm من طرف رانيا حماد
» افضل معلم جبس بالرياض تركيب جبس بورد بالرياض 20% خصم اتصل الآن
الأحد مارس 17, 2024 1:09 pm من طرف رانيا حماد
» شراء اثاث مستعمل بالكويت بخصم 30%
الأحد مارس 17, 2024 12:54 pm من طرف رانيا حماد