# مباحث متفرقه برنامه نویسی > برنامه نویسی Matlab >  چطور ميتونم با مطلب از صفحه كامپيوتر عكس بگيرم؟

## nanosi

سلام به همه دوستان
ميخوام همون كاري كه كليد كيبوردprint screen انجام ميده را با مطلب انجام بدم و اون عكس را پردازش كنم.
يعني ميخوام با مطلب از خود صفحه مانيتور عكس بگيرم بعد عكسو پرداش كنم.
حالا سوال: چطور عكس بگيرم و چطور بخونمش؟   :متفکر:

----------


## sadeghprog

بفرما این عکس گرفتنش و خوندنشم که کاری نداره

clc;
r=java.awt.Robot;
tool=java.awt.Toolkit.getDefaultToolkit();
rectangle=java.awt.Rectangle(tool.getScreenSize())  ;
image=r.createScreenCapture(rectangle);
fileh=java.io.File('screenshot.jpg');
a=javax.imageio.ImageIO.write(image,'jpg',fileh);
disp('done');

----------


## nanosi

خيلي ممنون. اما اين دستورات را در يك ام فايل كپي و اجرا كردم هيچ كاري نكرد. با اين دستورات فقط چند تا متغير دارم كه همشون 1 در 1 هستند و خبري از ماتري عكس نيست. 
ميشه يكم بيشتر توضيح بديد. ممنون ميشم

----------


## nanosi

تمام متغيرهايي كه از دستورات بالا بدست مياد را با دستور imshow تست كردم ولي عكسي نمايش نداد

----------


## sadeghprog

عکس با اسم screenshot.jpg داخل دایرکتوری که برنامه رو داری اجرا میکنی ذخیره میشه نه توی متغیرها. دایرکتوری برنامه را به دسکتاپ تغییر بده تا بتونی راحت تر پیداش کنی

----------


## nanosi

ممنون از راهنمايياتون. بله عكس در مسير ام فايل ذخيره ميشه :تشویق:

----------


## nanosi

ميشه يكم راجب به دستورات بالا توضيح بديد؟ جاوا اين وسط چيكار ميكنه؟
آيا اين دستورات مال خود مطلب نيست و از دستورات جاوا در مطلب استفاده شده؟
اين دستورات كدومش عكسو ميگيره كدومش عكسو ذخيره ميكنه؟
وقتي عكس گرفته ميشه، در حافظه كليپ بورد كامپيوتر هستش؟

----------


## sadeghprog

من خودم چند وقت پیش که لازم بود از صفحه عکس بگیرم  این کد در اینترنت پیدا کردم اما کلا همونطور که می دونید مطلب را با جاوا نوشتن پس هنگام نصب مطلب رانتایم جاوا هم نصب میش در جاوا کلاسی هست به اسم robot که با این کلاس میشه تمام کارهایی که میش با صفحه کلید و موس انجام داد پیاده کرد درمورد اون سوالت هم که در مورد موس بود هم احتمالا جواب میده اگر که میخوای واقعا اینکار انجام بدی یه سرچی در مورد java robot class بکن

----------


## nanosi

بام ممنون از راهنماييتون
ميشه بدون ذخيره كردن در محلي، مستقيما عكس را در متغير قرار داد و ماتريس عكس كه در متغير هست را خوند؟
چون به روش قبلي اول بايد عكس ذخيره بشه بعد بايد خونده بشه كه سرعت كار و پردازشمو پايين مياره

----------


## nanosi

در مورد اون سوالم دستور زير ماوس را به مكان دلخواه ميبره اما كليك نمدونم چطور ميكنه؟ هنوز گيرشم:
set(0,'PointerLocation',[100,100])

----------


## nanosi

يه جواب درست و درموني برا سوال خودم يافتم كه گفتنش خالي از لطف نيست  :چشمک: 
تابع function screencapture  را در زير گذاشتم  تا دانلود كنيد. اين تابع آپشن هاي زيادي داره . مثلا ميشه باهاش از كل يا قسمتي از يك فيگور، هندل، فريم، gui، دسكتاپ و .... عكس گرفت. ميشه فرمت خروجي را در قالب متغير مطلب يا در قالب فايل جاوا دريافت كرد. ميشه مستقيم عكس را ذخيره كرد و خيلي آپشن هاي ديگه. من يكي ا عمومي ترين كاري كه ممكنه نياز بشه را با دستور زير بهتون معرفي ميكنم. تماميه آپشنهاي اين دستور بصورت كامنت در ابتداي متن ام فايل فانكشن توضيح داده شده.
imageData = screencapture(0,  [20,30,250,550]);  % capture a desktop region
دستور بالا بخشي از دستكتاپ را عكس ميگيره و درون متغير imageData قرار ميده. با دستور زير ميتونيد اون عكسو ببينيد:
(imshow(imageData
تاكيد ميكنم كه بايد تابع و ام فايل دستورات شما در يك دايركتوري (مسير) باشند.

----------


## nanosi

بهتره در انتهای این صفحه یک علامت SOLVED  بعد از پنج سال بزاریم که نشون بده مسئله حل شده دیگه  :خجالت:

----------

