PDA

View Full Version : دسترسی به پیکسل تصاویر



fazel-d
دوشنبه 31 تیر 1387, 21:01 عصر
فکر می کنم سوالم رو تو عنوان بیان کردم
می خوام به یه پیکسل خاس توی عکسم دسترسی پیدا کنم. چه جور ی؟

Xcalivorse
دوشنبه 31 تیر 1387, 22:17 عصر
Bitmap b = (Bitmap)pictureBox1.Image;
Color c = b.GetPixel(100, 100);

fazel-d
یک شنبه 13 مرداد 1387, 00:13 صبح
اما این رنگ پیکسل رو بر می گردونه . من می خوام مثلا به داشتن یه X,Y به یه پیکسل از عکس دسترسی داشته باشم.
در ثانی به نظر شما برای کار با محیط های گرافیکی و عکس ها کدام یک از زبان ها VB.NET و C#.NEtو Visual C++ و یا دلفی را ترجیح می دهید و علتش را هم بگویید ؟

hdv212
یک شنبه 13 مرداد 1387, 00:23 صبح
اما این رنگ پیکسل رو بر می گردونه . من می خوام مثلا به داشتن یه X,Y به یه پیکسل از عکس دسترسی داشته باشم.
خب عکس شامل یه سری پیکسلهای رنگیه دیگه، شما میخوای به چی دستیابی داشته باشی ؟


در ثانی به نظر شما برای کار با محیط های گرافیکی و عکس ها کدام یک از زبان ها VB.NET و C#.NEtو Visual C++ و یا دلفی را ترجیح می دهید و علتش را هم بگویید ؟
من به شما این تضمین رو میدم که برای تولید نرم افزارهای گرافیکی شما هیچ محدودیتی در سی شارپ نخواهید داشت، برای اثبات حرفم، شما به این لینک (http://www.getpaint.net/) سری بزنید، نرم افزاری OpenSource رو میبینید شبیه فتوشاپ که با دات نت نوشته شده و زبان اصلی آن سی شارپه، حالا با خیال راحت به کارت ادامه بده.

naeeme
یک شنبه 13 مرداد 1387, 10:58 صبح
اما این رنگ پیکسل رو بر می گردونه . من می خوام مثلا به داشتن یه X,Y به یه پیکسل از عکس دسترسی داشته باشم.

خوب به طور مشابه هم تابع setPixel رو هم داریم. بجز گرفتن و set کردن، چه کار دیگه ای می خوایم بکنیم؟


در ثانی به نظر شما برای کار با محیط های گرافیکی و عکس ها کدام یک از زبان ها VB.NET و C#.NEtو Visual C++ و یا دلفی را ترجیح می دهید و علتش را هم بگویید ؟


من هم با vb.net کار کردم و هم با C#. توی vb.net یه سری چیزا خیلی دم دسته و مدیریت یسری چیزا سخت تره! مثلا برای تصاویر بزرگ که حاصل محاسبات هستن( مثلا برنامه های در زمینه GIS) سی شارپ به خاطر مدیریت در دسترس حافظه راحت تره. اما در کل هرکاری که توی C# بشه انجام داد، در VB.net هم میشه انجام داد.( با کمی اختلاف در سادگی و سختی!)

pesare_ariyayi
شنبه 04 آبان 1387, 18:31 عصر
getpixel(x,y) فقط رنگ رو نمیده, یک پیکسل رو به عنوان یک شی می ده که می تونی به هر فاکتورش دسترسی داشته باشی. اما احساس می کنم که تو کار کردن با get , set pixel مشکل سرعت داشته باشی.
راجع به زبانش بگم که من هم با c# پروژه های ایده آلی رو درست کردم و کم نیاوردم.

hanieh66
شنبه 04 آبان 1387, 19:59 عصر
سلام من هم در همین مورد سوال داشتم


خب عکس شامل یه سری پیکسلهای رنگیه دیگه، شما میخوای به چی دستیابی داشته باشی ؟


مثلا یک عکس با فرمت24 RGB بیت bmp رو در نظر بگیرید. هر پیکسل از 3 بایت تشکیل شده (RGB) حالا من می خوام به تک تک این بایتها دسترسی داشته باشم و بتونم مثلا بیت شماره 5 از هر سه تا بایت رو صفر کنم.
چه جوری باید اینکارو انجام بدم؟
واقعا تو سی شارپ می شه اینکارو کرد؟!
getpixel که فقط رنگ رو بر میگردونه.


getpixel(x,y) فقط رنگ رو نمیده, یک پیکسل رو به عنوان یک شی می ده که می تونی به هر فاکتورش دسترسی داشته باشی. اما احساس می کنم که تو کار کردن با get , set pixel مشکل سرعت داشته باشی.

ولی getpixel فقط رنگ رو برمی گردونه و نمی شه هر کدوم از R , G , B رو جداگانه تغییر داد و فقط خواندنی هستند

SMRAH1
شنبه 04 آبان 1387, 21:08 عصر
رنگ یک شی Color است که دارای خصوصیات R و G و B است و می توان هر کدام را به دلخواه تغییر داد!

Armin060
شنبه 04 آبان 1387, 22:23 عصر
در ثانی به نظر شما برای کار با محیط های گرافیکی و عکس ها کدام یک از زبان ها VB.NET و C#.NEtو Visual C++ و یا دلفی را ترجیح می دهید و علتش را هم بگویید ؟

در هيچ كدوم از موارد دات نت، محدوديتی در گرافيك نيست ( تقريبا ). دلفی هم كه .... .
ميمونه ++C. اينجا يكم كار سخت ميشه. ولی اگر حوصله داشته باشيد تازه ميفهميد گرافيك يعنی چی. اگر هم كه اسمبلی هم بلد باشيد كه ديگه هيچی. ميريد فضا. ميشه فوتوشاپ.

hanieh66
شنبه 04 آبان 1387, 22:24 عصر
رنگ یک شی Color است که دارای خصوصیات R و G و B است و می توان هر کدام را به دلخواه تغییر داد!


اگه ممکنه این کد رو امتحان کنید و نتیجه رو اینجا اعلام کنید! :


Bitmap bmp = (Bitmap)pictureBox1.Image;
bmp.GetPixel(1, 1).R = 3;

naeeme
یک شنبه 05 آبان 1387, 12:55 عصر
اگه ممکنه این کد رو امتحان کنید و نتیجه رو اینجا اعلام کنید! :


Bitmap bmp = (Bitmap)pictureBox1.Image;
bmp.GetPixel(1, 1).R = 3;


شما اگر کدتون رو به کد زیر تبدیل کنین، نتیجه ای که می خواید رو میگیرین.


Bitmap bmp = (Bitmap)pictureBox1.Image;
Color clr = bmp.GetPixel(1, 1);
clr = Color.FromArgb(3, clr.G, clr.B);
bmp.SetPixel(1, 1) = clr;

hanieh66
یک شنبه 05 آبان 1387, 18:39 عصر
اینو می دونستم من در جواب این پستهای نفرات قبل اینو نوشتم :


getpixel(x,y) فقط رنگ رو نمیده, یک پیکسل رو به عنوان یک شی می ده که می تونی به هر فاکتورش دسترسی داشته باشی. اما احساس می کنم که تو کار کردن با get , set pixel مشکل سرعت داشته باشی.



رنگ یک شی Color است که دارای خصوصیات R و G و B است و می توان هر کدام را به دلخواه تغییر داد!