menusearch
javapro.ir

♨️ جلسه ششم - آموزش ساخت برنامه نمایش عکس در جاوا

جستجو
پنج شنبه ۱ آذر ۱۴۰۳ | ۱۳:۱۰:۲۲
۱۳۹۸/۵/۱۲ شنبه
(3)
(0)
♨️ جلسه ششم - آموزش ساخت برنامه نمایش عکس در جاوا
♨️ جلسه ششم - آموزش ساخت برنامه نمایش عکس در جاوا

به نام خدا


سلام دوست من، در جلسات گذشته در مورد درک و استخراج مفاهیم جاوا یک مسئله و با محیط و امکانات برنامه Netbeans برای طراحی ظاهر گرافیکی یک برنامه ویندوزی آشنا شدیم و توانستیم ظاهر گرافیکی پروژه برنامه نمایش عکس در جاوا را طراحی کنیم. تصویر(1)

 

 

 

دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا

 

خب ممکنه براتون سوال پیش بیاد که چرا ظاهر گرافیکی برنامه چندان زیبا نیست؟بله حق با شما است با وجود این که با اضاف کردن image ها به دکمه ها، فریم و پنل برنامه باز ظاهر برنامه اون ظاهر زیبا و مدرنی که برنامه های امروزی دارند را ندارد! دلیلشم اینه که ما داریم از کتابخانه گرافیکی Swing در جاوا استفاده می‌کنیم و این کتابخانه تقریبا قدیمی شده است! و در حال حاضر JAVAFX جایگزین Swing در جاوا شده است که برنامه هایی با ظاهر گرافیکی شیک و مدرنی را می‌توانید از طریق آن طراحی کنید. خب چرا Swing رو دارید آموزش می‌دید؟! چون در دانشگاه هنوز هم دانشجویان برای تحویل پروژه گرافیکی جاوای خود از Swing استفاده می‌کنند و برای این که دانشجوها مجبور نباشند چند صد هزار تومن! پول بدهند براشون بیرون پروژه شون رو بنویسند تصمیم به آموزش Swing به صورت پروژه محور گرفتیم. اما این را بدانید که مهم یادگیری الگوریتم پیاده سازی یک پروژه برنامه نویسی هست و بعدش با هر کتابخانه ای مثل javafx می‌تونید با گرافیک بهتری ظاهر برنامه را طراحی کنید وگرنه عملیاتی که برنامه برامون انجام میده هیچ فرقی نمیکند که از Swing یا Javafx استفاده کنیم.

 

خب بگذریم.... ظاهر گرافیکی برنامه رو طراحی کردیم حالا میریم سراغ کدنویسی کارایی که صورت مسئله ازمون خواسته است.
ما در جلسه دوم صورت مسئله را بررسی کردیم و مفاهیم مورد نیاز برای ساخت برنامه نمایش عکس در جاوا را استخراج کردیم.
صورت مسئله به صورت زیر است: تصویر(2)

 


دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا
نکته :جلسه دوم آموزش پروژه محور نمایش عکس در جاوا را قبلش یک مروری کنید که یادتون بیاد چه مفاهیمی را استخراج کردیم.
طبق برداشتی که از مسئله داشتیم این بود که ما یک کلاس با نام عکس داریم که ویژگی ها و رفتارهای خاص خودش را داشت.
پس در برنامه netbeans و در بخش پروژمون که اسمش view photo بود و در پکیج photo.view قصد داریم یک کلاس با نام picture ایجاد کنیم. برای این کار روی پکیج photo.view کلیک سمت راست می‌کنیم و از بخش New گزینه Java Class… را انتخاب می‌کنیم: تصویر(3)

 

 

 

 

دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا

 

 

و بعد مطابق با تصویر(4) اسم کلاس خود را "Picture" انتخاب می‌کنیم :

 

 

 


دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا

 

 

بعد کارایی که در تصاویر(3) و (4) برای ایجاد یک کلاس ایجاد کردیم نتیجه به صورت تصویر(5) خواهد بود:

 

 

 

 

دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا

✔ همان طور که در تصویر(5) مشاهده می‌کنید یک کلاس با نام Picture ایجاد کردیم که درون پکیج view.photo قرار گرفته است.


✔ دوستان من دیگه تصویر کدها رو براتون قرار میدم و برای دسرسی به سورس کدهایی که در هر جلسه آموزشی بررسی می‌کنیم به صورت جداگانه در کنار پی دی اف آموزشی براتون به اشتراک می‌گذارم. یعنی فایل آموزشی هر جلسه شامل یک پی دی اف + یک فلودر سورس کدی است که در ان جلسه اموزش داده ام...اگر داری این پی دی اف آموزشی را میخوانی و دسرسی به فولدر سورس کد آن نداری کافی که از سایت javapro.ir از بخش جاوا و آموزش پروژه محور آن را دانلود کنید.

 

حالا برای کلاس Picture قصد داریم سه ویژگی زیر را فعلا تعریف کنیم:


•    عرض (width)
•    ارتفاع(height)
•    تصویر(image)


خب تا اینجا کلاس Picture ما به صورت زیر خواهد بود: تصویر(6)

 

 


دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا
✔ خب ما قراره از کامپیوتر تعدادی عکس بگیریم و در برنامه مون نمایش بدهیم. پس نیاز به یک کلاس داریم که با شی ساختن از آن بتوانیم عکس های خوانده شده از کامپیوتر را درون شی آن بریزیم. نگران نباشید جلوتر متوجه میشید چه اتفاقی قراره بیفته 😃

 


توضیحات تصویر(6)


✔ خط 9 تا 10 پکیج های مورد نیاز برای استفاده از Arraylist و BufferedImage در کلاسمون را import کرده ایم.


✔ BufferedImage چیست؟ BufferedImage کلاسی است که برای خواندن فایل تصویری از آن استفاده می‌کنیم.


✔ خط 17 عرض عکس و خط 18 ارتفاع عکس و خط 19 لیست فایل های تصویری که از کامپیوتر میخوانیم یا همون عکسامون را در خود ذخیره می‌کند.

 

✔ خب ما میخوایم اندازه همه عکس هامون یک مقدار ثابت غیر قابل تغییر باشد به همین خاطر در خط 17 و 18 متغیرهای width و height را مقداردهی اولیه کرده و از نوع final تعریف کرده ایم.


✔ امکان داره جلوتر نیاز داشته باشیم ویژگی یا متدی را به کلاس Picture اضاف یا کم کنیم فعلا تا اینجا دست نگه می‌داریم و سراغ کلاس MainClass برنامه مون میریم. روی MainClass.java دابل کلیک می‌کنیم تا باز شود و بعد از بخش Source وارد سورس کد آن می‌شویم. تصویر(7)

 

 

 

 

دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا

✔ تصویر(7) بخشی از کدهای موجود در کلاس MainClass را نمایش میدهد،باز تاکید می‌کنم تمام سورس کدهای هر جلسه آموزشی را در فولدری جداگانه در کنار پی دی اف اموزش برای شما قرار دادم تا بتوانید به راحتی آنها را Run کنید.

 

✔ خب به صورت مسئله بازگردیم،در صورت مسئله گفته شده از طریق منو open عکس های خود را از محلی ازکامپیوتر بخوانید و درون برنامه نمایش دهید. برای این کار در بدنه کلاس MainClass دستوراتی را تعریف می‌کنیم که عکس هامون را از کامپیوتر بخواند.

 

✔ ابتدا باید دستوراتی وجود داشته باشد که با زدن آیتم منو open یک FileChooser باز شود و از طریق آن بتوان عکس هامون را در کامپیوتر پیدا کنیم و آنها را بخوانیم. برای این کار یک متد با نام getPathImageFile در بدنه کلاس MainClass تعریف می‌کنیم و دستوراتی را برای آن می‌نویسیم: تصویر(8)

 

 

دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا

 

توضیحات تصویر(8):


کار متد getPathImageFile چیست؟ این متد یک FileChooser ایجاد می‌کند که از طریق آن می‌توان فایل های خود را از کامپیوتر پیدا کرده و بخوانیم. چیزی شبیه تصویر(9)

 

 

 

 

آموزش پروژه محور جاوا

💠 کاربرد دستور موجود در خط 37 تصویر(8) چیست؟

 

fc.setMulti select ionEnabled(true);


✔ اگر در جاوا قصد گرفتن بیش از یک فایل از کامپیوتر را داشته باشید مقدار این دستور را باید true بگذارید.

💠 کاربرد دستور موجود در خط 38 تصویر(8) چیست؟

 

int i = fc.showOpenDialog(this);


✔ برای استفاده از عملیات open در FileChooser از این دستور استفاده می‌کنیم.

 

💠 کاربرد دستور موجود در خط 40 تصویر(8) چیست؟

 

File[] f = fc.get select edFiles();


✔ با دستور فوق فایل هایی که از کامپیوتر را انتخاب کردیم درون آرایه ای از نوع File می‌ریزیم. لازم به ذکر است فایل از هر نوعی می‌تواند باشد. که در این برنامه قراره فایل های تصویری را دریافت کنیم.

 

💠 کاربرد دستور موجود در خط 42 تصویر(8) چیست؟


✔ خب متد به گونه ای تعریف شده است که یک مقداری را برمی گرداند و این مقدار از نوع آرایه ای از نوع File است.

 

💡 تا اینجا در کلاس MainClass متدی را تعریف کردیم که کار گرفتن و خواندن فایل هامون رو از کامپیوتر انجام میده حالا سراغ دستوراتی می‌رویم که فایل های تصویری خونده شده از کامپیوتر رو در یک لیستی از تصاویر موجود در کلاس Picture ذخیره کند. تصویر(10)

 

 

 


آموزش پروژه محوز زبان جاوا

 

بررسی تصویر(10) و متد readImage:


💡 توضیح کلی در مورد کاربرد متد readImage : کار این متد ایجاد لیستی از فایل های تصویری برای ذخیره فایل های تصویری خوانده شده از کامپیوتر است. به عبارت دیگر فایل هایی تصویری یا همون عکس هامون رو که از طریق متد getPathImageFile از کامپیوتر می‌خوانیم را دونه به دونه در خانه های لیست مون ذخیره می‌کنیم.


💠 در خط 49 دستور زیر را داریم:

 

pic.image=new ArrayList<BufferedImage>();


✔ شی pic چیه و از کجا اومده؟ شی pic از نوع کلاس Picture است. ما در بدنه کلاس MainClass از کلاس Picture یک شی با نام pic ایجاد کرده ایم. تصویر(11)

 

 

 


دوره آموزش رایگان پروژه محور زبان برنامه نویسی جاوا

 

✔ در تصویر(11) در خط 24 در بدنه کلاس MainClass از کلاس Picture یک شی با نام pic ایجاد کرده ایم، چرا؟ ما قصد داریم فایل های تصویری که از کامپیوتر می‌خوانیم در لیست تصویری موجود در کلاس Picture ذخیره کنیم.به همین دلیل نیاز به ساخت یک شی از نوع کلاس Picture داریم که از طریق اون به لیست تصویری موجود در کلاس Picture دسرسی داشته باشیم.


💠 برگردیم به خط 49 موجود در تصویر(10):

 

pic.image=new ArrayList<BufferedImage>();


✔ خب با شی pic که حالا میدونیم از کجا اومده شی image که از ArrayListاز نوع BufferedImage است و در کلاس Picture واقع شده را صدا می‌زنیم و سمت راست مساوی با صدا زدن کلمه کلیدی new و سازنده ArrayList از نوع BufferedImage یک لیست image می‌سازیم که توانایی ذخیره هر تعداد فایل تصویری را خواهد داشت. چرا از ArrayList استفاده کردیم و از آرایه استفاده نکردیم؟ زیرا ما نمی‌دونیم کاربر چه تعداد فایل تصویری قراره از کامپیوتر بخواند به همین دلیل بهترین ساختمان داده برای ذخیره فایل های تصویری خوانده شده از کامپیوتر که تعدادشون را نمی‌دانیم کلاس ArrayList است.


بررسی خط 52 موجود در تصویر(2):

 

BufferedImage im = null;


✔ یک شی از کلاس BufferedImage تعریف کرده و مقداردهی اولیه null کردیم. این شی قراره فایل های تصویری مون رو تک به تک داخلش بریزیم.


💠 بررسی خط 53 موجود در تصویر(10):

 

File[] files=getPathImageFile();


✔ همان طور که می‌دانید متد getPathImageFile فایل هامون رو از کامپیوتر میخواند و در نهایت همه فایل های خوانده شده را در قالب آرایه ای از نوع File بهمون برمیگرداند و ما این فایل هایی که بهمون پس میده را در یک ارایه ای از نوع File ذخیره می‌کنیم.


💠 بررسی خط 55 تا 64 موجود در تصویر(10):

 

for(int j=0;j<files.length;j++){
                try {
im = ImageIO.read(new File(files[j].getPath()));

pic.image.add(im);

                   
} catch (IOException e) {
e.printStackTrace();
}

 

✔ همان طور که می‌دانید ما فایل هایی که از کامپیوتر خواندیم را درون آرایه ای با نام files که از نوع کلاس Fileهست ذخیره کردیم.
✔ دستور ImageIO.read کارش به صورت تخصصی خوندن فایل های تصویری از محلی از کامپیوتر است.

 


✔ ما فایل هامون رو از کامپیوتر خواندیم اما این فایل های خوانده شده با وجودی که تصویری است برای نمایش در برنامه بکارمون نمیاد! چرا؟! چون ما فایل هایی که از نوع BufferedImage هستند را میتونیم روشون کار کنیم و مثلا در برنامه نمایش بدیم و نمی‌تونیم فایل هایی که از نوع کلاس File هستند با وجود تصویری بودنشان در برنامه نمایش بدهیم. چرا؟ چون اشیا از نوع File را نمی‌توان به اشیا از نوع BufferedImage تبدیل کرد. ما از طریق متد getPathImageFile تنها می‌توانیم فایل های موجود در کامپیوترمون را در قالب نوع کلاس File یعنی با هر نوع فرمتی که باشه بخوانیم.


✔ حالا در متد readImage قصد داریم تک به تک به ادرس فایل هایی که از کامپیوتر خواندیم دسرسی پیدا کنیم و با دستور ImageIO.read تک به تک فایل های تصویری مون رو دوباره بخوانیم و توی شی از نوع کلاس BufferedImage بریزیم.


✔ با یک حلقه for خانه های آرایه files را پیمایش می‌کنیم و به تک به تک فایل هایی که از کامپیوتر خواندیم دسرسی پیدا می‌کنیم.

 

im = ImageIO.read(new File(files[j].getPath()));


✔ متد getPath آدرس محل کامپیوتری هر فایل ذخیره شده در آرایه files را به ما برمی گرداند. و مقدار داده شده را ما در شی جدیدی که از نوع کلاس File که new شده است میریزیم. و حالا از طریق دستور ImageIO.read فایل تصویری مون رو از کامپیوتر میخوانیم و درون شی im که از نوع کلاس BufferedImage است میریزیم.

 

pic.image.add(im);


✔ حالا تک به تک فایل های تصویری که از نوع BufferedImage است را در ArrayList مون که نامش image است ذخیره می‌کنیم.


✔ از دستور try-catch برای کنترل استثناهای احتمالی مربوط به خواندن فایل هامون استفاده کردیم.


نتیجه گیری کلی در مورد متد های getPathImageFile و readImage :


شاید توضیحات من گیج کننده باشه در بالا اما در کل هدف از این دو متد این است که


1.    از طریق اون فایل هامون رو به صورت دستی از کامپیوتر انتخاب کنیم کاربرد منو open
2.    بعد حالا فایل هایی که از کامپیوتر خواندیم را آدرس هاشون رو به دست بیاریم که کجای کامپیوتر قرار دارند.
3.    بعد حالا از طریق آدرس های به دست آمده از فایل ها دوباره با دستوری که کارش خوندن فایل های تصویری است فایل های تصویری خود را بخوانیم
4.    در نهایت فایل های تصویری خوانده شده خود را به لیست تصاویر خود اضاف کنیم.

این جلسه آموزشی تا اینجا کافیه، سورس کدهای این جلسه آموزشی رو در کنار پی دی اف براتون به اشتراک گذاشته ام.اگه الان داری این کتابو میخونی و نمی‌دونی سورس کدش کجاست اینجا کلیک کن و به جلسه شش آموزش پروژه محور برنامه نمایش عکس در جاوا سر بزن.


دوست من آرزوی سعادت و کامیابی رو برات دارم،خدانگهدار


این جلسه آموزشی را می‌توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)

 

 

کانال تلگرام آموزش جاوا

 

 

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

لینک دانلود کتاب + سورس کد این جلسه آموزشی

 

 


نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا
عضو کانال تلگرام ما شوید.

 

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر
هدر سایت
بلک فرایدی آکادمی جاواپرو،50% تخفیف روی تمامی دوره های جاوا تا 10 آذر 1403
مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو  [کلیک کنید]
آموزش پروژه محور اسپرینگ بوت(Spring Boot)-سیستم دانشگاه
ثبت نام در دوره آموزش Spring security
دوره معماری میکروسرویس ها (Microservices) با استفاده از Spring Boot و Spring Cloud
دوره پرتاب | آموزش پیش نیازهای برنامه نویسی
دوره آموزش مبانی زبان برنامه نویسی جاوا
دوره آموزش مفاهیم پیشرفته زبان برنامه نویسی جاوا
مقدمه ای از زبان برنامه نویسی جاوا(java)
آموزش زبان برنامه نویسی جاوا
آموزش گرافیک در زبان برنامه نویسی جاوا
آموزش مدیریت چیدمان گرافیکی در زبان جاوا
آموزش ساخت بازی دوبعدی در زبان جاوا
Collection ها در زبان برنامه نویسی جاوا
آموزش پروژه محور ساخت برنامه مدیریت بانک با JavaFX
نمونه پروژه های رایگان زبان جاوا
آموزش دیتابیس در زبان برنامه نویسی جاوا
نمونه مثال پایه ای زبان برنامه نویسی جاوا
نمونه مثال String در زبان برنامه نویسی جاوا
آموزش جامع برنامه نویسی JavaFX
آموزش ساخت برنامه آزمون تستی در JavaFX
آموزش برنامه نویسی سوکت در جاوا
آموزش ساخت برنامه دفترچه تلفن با JavaFX
آموزش ساخت ربات ساده تلگرام با زبان جاوا
آموزش ساخت برنامه ماشین حساب با JavaFX
آموزش ساخت برنامه ساده مدیریت ایمیل ها با JavaFX
دوره آموزش Spring Boot
سفارش انجام پروژه زبان برنامه نویسی جاوا(JAVA)
سفارش انجام پروژه برنامه نویسی متلب(MATLAB) با قیمت منصفانه و تحویل به موقع
سفارش انجام پروژه زبان برنامه نویسی سی شارپ (#C)
سفارش انجام پروژه زبان برنامه نویسی سی(C)
سفارش انجام پروژه زبان برنامه نویسی پایتون(Python)
سفارش انجام پروژه زبان برنامه نویسی PHP (پی اچ پی)
سفارش انجام پروژه زبان برنامه نویسی اسمبلی(Assembly)
سفارش انجام پروژه زبان برنامه نویسی جاوا اسکریپت (Javascript)
سفارش انجام پروژه هوش مصنوعی
سفارش انجام پروژه طراحی الگوریتم
سفارش انجام پروژه ساختمان داده ها
سفارش انجام پروژه مهندسی نرم افزار
سفارش انجام پروژه شبکه های کامپیوتری
سفارش انجام پروژه پایگاه داده: دیتابیس (database)
 سفارش انجام پروژه سیستم عامل
سفارش انجام پروژه پاورپوینت(PowerPoint)
سفارش انجام پروژه اکسل (Excel)
سفارش انجام تحقیق و تهیه مقاله
سوالات متداول برنامه نویسی
جدیدترین مطالب
گفتگو را شروع کنید
مشاوره ،تدریس خصوصی و سفارش انجام انواع پروژه های برنامه نویسی