PDA

View Full Version : ذخیره 3 عکس در قالب یک عکس



programmermp
چهارشنبه 10 مرداد 1386, 21:07 عصر
با سلام خدمت دوستان

فرض کنید من 3 تا picturebox دارم حالا می خواهم دو تا از اونها رو که حاوی دو عکس

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

دارم که می خواهم هر سه تا عکس در قالب یک عکس ذخیره بشه چی کار باید بکنم ؟

با تشکر از شما

saeed_rezaei
چهارشنبه 10 مرداد 1386, 22:27 عصر
یعنی چی؟ یعنی هر سه تا تصویر کنار هم بیفتند؟

programmermp
پنج شنبه 11 مرداد 1386, 12:43 عصر
سلام

اره یه همچین چیزی

یکی از سه تصویر حکم تصویر اصلی رو داره که باید دو تصویر دیگه عین دو تا لایه

در اون ذخیره بشن

یعنی فرض کن دو تا تصویر داری که یکی عکس یک اردک هست یکی عکس یک توپ

خوب عکس توپ رو گذاشتی زیر عکس اردک بعد همونطور که روی عکس اولی می خواهی

ذخیره بشن نمی دونم گرفتی یا نه مطلب رو مثل کار با عکس ها در فتوشاپ دیگه

سه تا عکس عین سه تا لایه می تونم روی هم کنار هم یا در هر حالتی ذخیره بشن در

قالب یک فایل

من می خواهم دو تا عکس مورد نظر (اردک و توپ ) کنار هم باشند بعد در همون حالت روی

عکس اولی ذخیره بشن

با تشکر

Business Analyst
پنج شنبه 11 مرداد 1386, 13:18 عصر
دوست عزیز توی یکی از تاپیک ها توی همین صفحه اصلا هست سوال بوده در مورد نوشتن متن روی تصویر
اونجا پست 3 یا 4 به این سوال جواب دادن
http://barnamenevis.org/forum/showthread.php?t=71781
امیدوارم حل شه

Business Analyst
پنج شنبه 11 مرداد 1386, 13:25 عصر
خودمم چون واسم جالب بود کردم
درستم شد
اینم کدش
امیدوارم به دردتون بخوره

Dimbim1AsNewBitmap(PictureBox1.Image)
DimgAsGraphics = Graphics.FromImage(bim1)
Dimbim2AsNewBitmap("C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Blue hills.jpg")
g.DrawImage(bim2, 12, 21)
bim1.Save("e:\test.jpg")

توی درایو e رو نگاه کن حالا درست شده!!

saeed_rezaei
پنج شنبه 11 مرداد 1386, 15:17 عصر
سلام programmermp جان
دوستمون، اقای business analyst جواب رو داده. این باید همون چیزی باشه که مد نظرت بود. آره؟

programmermp
پنج شنبه 11 مرداد 1386, 16:33 عصر
سلام programmermp جان
دوستمون، اقای business analyst جواب رو داده. این باید همون چیزی باشه که مد نظرت بود. آره؟

سلام سعید جان

اره دستش درد نکنه و همینطور شما

فقط یه مشکل هست برای ذخیره دو تا عکس روی یه عکس باید کد زیر رو مجدد تکرار بکنم

ولی نمی دونم چرا عکس رو اینقدر بزرگ می اندازه ؟؟؟؟ یعنی مثل عکس دومی تو کدی

که دوست عزیزمون گذاشته کوچیک نمیشه ؟؟؟




Dim bim2 AsNew Bitmap("C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Blue hills.jpg")
g.DrawImage(bim2, 12, 21)



با تشکر

saeed_rezaei
پنج شنبه 11 مرداد 1386, 19:30 عصر
درسته. ببین. فرض کن یه جعبه تصویر انداختی رو فرمت و خاصیت imagesize روز زدی streach. در این صورت تصویرت هنگام نمایش کوچیکتر می شه. هنگام نمایش. حالا بیا و یه متن رو روی فرم اضافه میکنیم. به همون شیوه ای که قبلا یاد گرفتید (دراین مثال از متن استفاده میکنیم تا ساده تر باشه)
سعی کنید فونت نوشته خیلی بزرگ باشه. مثلا نصف تصویر رو بپوشونه. حالا که تصویر رو ذخیره می کنی، اگه تصویر ذخیره شده روی هارد دیسک رو با تصویر روی فرمت مقایسه کنی می بینی که اندازه تصویر در روی هارد دیسک بزرگتره.
به تصویر ضمیمه یه نگاهی بنداز


در مثالی که دوستمون زدن، تصویر اولی رو از روی picturebox گرفتیم در حالی که تصویر دوم رو از روی هارد دیسک. و همه می دونیم که جعبه تصویر یه خاصیت داره با عنوان imagesize که می تونه حالتهایی را برای نمایش تصویر ارائه بده. اما هنگام ذخیره سازی طبیعیه که اندازه های دوتا تصویری که ذخیره شدن با اندازه های دوتا تصویر روی فرمت یکی نباشن.

پیشنهاد می کنم، هیچ گاه برای کار برو روی تصاویر، از picturebox استفاده نکنید چون تصاویر رو به صورت غیر واقعی نشون می ده.
و یه نکته خیلی مهمتر. ما برای کار بر روی تصاویر از کلاس graphic استفاده میکنیم. اما خود تصویر کلاس image هست و این کلاس زیر مجموعه graphic.
برای همینه که اگه شما یه متن رو روی عکستون درون picturebox بنویسید و بعد بخواید با دستور picturebox.image.save اون تصویر رو دوباره ذخیره کنید، می بینید که متن در تصویر ذخیره شده وجود نداره.
یه کمی پرکنده توضیح دادم. اما امیدوارم منظورم رو رسونده باشم.

programmermp
پنج شنبه 11 مرداد 1386, 19:50 عصر
سلام

با تشکر از جوابت سعید جان

یه سئوال

چطوری میشه یه کاری کرد که عمل drag&drop انجام داد بین دو فرم فرزند

یعنی بشه یک picturebox رو از یک فرم به فرم دیگر منتقل کرد

اصلا امکان پذیر هست یا نه ؟

در واقع می خواستم اول بپرسم عکس داخل picturebox که دیدم نمی شه باید خودش

منتقل بشه

با تشکر

Business Analyst
پنج شنبه 11 مرداد 1386, 22:15 عصر
شما میتونید اون مسیر فایل عکس رو که میخواین بندازید توی فرم دوم برای فرم دو بفرستید و با روشهایی که گفته شد اونو روی عکس دیگه بندازید


Publicstrimage1AsString
PrivateSubForm1_Load(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs) HandlesMyBase.Load
IfOpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OKThen
strimage1 = OpenFileDialog1.FileName
EndIf
EndSub

در فرم دوم هم


PublicClassForm2
PrivateSubForm2_Load(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs) HandlesMyBase.Load
DimbitmAsNewBitmap(Form1.strimage1)
EndSub
EndClass

programmermp
پنج شنبه 11 مرداد 1386, 23:08 عصر
سلام

business جان ممنون از جوابت

ولی نمی شه خود picturebox را منتقل کرد نه؟

سئوال دوم :

ذخیره چند عکس در یک عکس همنطور که خودت می دونی مدت زمانی طول می کشه

من می خواهم برای این حالت که برنامه نیز قفل میشه یه پیامی مثل کمی صبر کنید نمایش

بدهم تا پایان انجام این عملیات می شه برای این کار از thread استفاده کرد

اما راه دیگری هم وجود داره یا نه ؟

با تشکر

Business Analyst
پنج شنبه 11 مرداد 1386, 23:32 عصر
اخه خود پیکچر باکس رو برای چه کاری میخواین ببرین؟مگه عکسش رو لازم ندارین؟
میتونین اونجا یه picturebox درست کنید و آدرس عکس رو بدین توی اون
در مورد سوال دوم! برای چی طول میکشه؟؟ بعید میدونم زیاد طول بکشه
من تا 5 تا عکس رو کردم و طول نکشید.یعنی میخوای یه ترد به اون مجزا اختصاص بدی؟

saeed_rezaei
جمعه 12 مرداد 1386, 11:00 صبح
سلام دوستان
شما می تونید هر چی رو که می خواید drag drop کنید. اما به نظر من هم، آقای business درست می گن. بهتره به جای درگ کردن جعبه تصویرتون، تصویر داخلش رو انتقال بدید.
در هر صورت یه نمونه برنامه می زارم.
این نمونه برنامه سه نوع درگ رو بهتون نشون می ده. قسمت درگ کنترل هم شامل این موردها می شه. همچنین درگ تصویر.

programmermp
جمعه 12 مرداد 1386, 11:17 صبح
business جان

ضرورتی در انتقال پیکچر باکس نیست حرف شما درست

اما من خودم می خواهم این کار رو یاد بگیرم

سعید جان منتظر برنامه شما هستم

با تشکر از همه