PDA

View Full Version : Replace فایل عکس در زمانی که خود عکس در Picture box لود شده



arashkey
سه شنبه 16 بهمن 1386, 08:34 صبح
می خواستم عکس هام رو کاربرم انتخاب کنه بعد ذخیره کنه . کاربر اول می یاد و یک عکس رو انتخاب می کنه ، بعد عکس داخل Picture Box لود می شه ، بعد تو آدرسی که خودم دادم ذخیره می شه.
من می خواستم به کاربرم امکان ویرایش عکس رو هم بدم ، یعنی کاربر بعد از اینکه عکس رو ذخیره کرد بتونه جای عکس فعلی یک عکس دیگه درج کنه. به این ترتیب که فرم که باز می شه عکس قبلی لود می شه ، بعد کاربر روی عکس کلیک می کنه و یک عکس دیگه انتخاب می کنه ، بعد دگمه ذخیره رو می زنه. همه مشکلات از همین جا شروع می شه، چون وقتی قبلا فایلی وجود داشته باشه بعد من بخوام یک عکس دیگه جاش ذخیره کنم باید اول عکس قبلی رو پاک کنم بعد این عکس جدید رو بزارم ، ولی از من قبول نمی کنه ، و یک Run Time Error به نام GUI+ Error می ده. من اول فکر کردم شاید مشکل از Picture Box پس بعد از اینکه کاربر دکمه Ok رو زد من اول Picture Box رو از بین بردم ولی باز هم همون خطا رو داد
در ضمن من الان فقط می خوام فایل رو پاک کنم ، همین ، چون اگه فایل نباشه درجش مشکلی نداره
وقتی از دیتابیس استفاده کردم مشکلم حل شد
ولی من می خوام عکس هام رو داخل هارد ذخیره کنم

yavari
سه شنبه 16 بهمن 1386, 10:00 صبح
سلام

متاسفانه 2 بار خوندم اما نفهمیدم آخر چی میخواین!
اگه مشکل پاک کردن فایله ، این راهش :

If System.IO.File.Exists("C:\PicAstronomical\" & PictureName) = True Then System.IO.File.Delete("C:\PicAstronomical\" & PictureName)
اگه ذخیره رو هارد یا دیتابیسه ، واضح تر بگید میخواید چیکار کنید دقیقا !

موفق باشید

arashkey
سه شنبه 16 بهمن 1386, 14:45 عصر
برای اینکه دقیقا نشان بدهم مشکلم از کجاست ، یک برنامه کوتاه نوشتم که مشکل دقیقا نشان می دهد
لطفا فرم را دو بار باز کنید. یک بار یک عکس ثبت کنید. سپس فرم را ببندید و دوباره یک عکس ذخیره کنید

arashkey
چهارشنبه 17 بهمن 1386, 10:02 صبح
اگه دوستان تو باز کردن پروژه مشکل دارن می خواهید با 2008 درست کنم بفرستم ؟
لطفا اگر کسی لینکی برای کمک داشت لطف کنه

saman_itc
چهارشنبه 17 بهمن 1386, 11:38 صبح
عزیزم تو همین قسمت .یه مثال کامل کار کردن با عکس هست من گرفتمش مشکلم حل شد
می خواهی اگه پیدا نکردی لینکشو بزارم

arashkey
چهارشنبه 17 بهمن 1386, 12:01 عصر
حتما ، خیلی ممنون می شم ، والا من که هر چی سرچ کردم هیچ تاپیک مناسبی پیدا نکردم.
اگه تونستید این مشکلمم برطرف کنید.
متاسفانه این پروژه مربوط به یکی از دوستانم بود. چون ایشون خیلی به گرافیکش علاقه داشت چندین جا این عمل اتصال عکس رو انجام داده بود. من نمی دونم چیکار کنم که اتصال عکس با TextBox قطع بشه و دیگه از همدیگه جدا بشن ، و اجازه دستکاری فایل مربوط به عکس رو به من بده.
البته با استفاده از روش درج اطلاعات در داخل بانک مشکل رو بر طرف کردم ، یعنی بعد از اینکه فایل رو توی TextBox لود می کردم ، اون رو داخل بانک ذخیره می کردم ، ولی همونطور که شما می دونید و دوست منم متوجه شد ، کار با عکس به این شکل فوق العاده سنگین و نامناسب است . در صورتی که روشی پیدا کنم که این مشکل رو حل کنم از اون استفاده خواهم کرد.

yavari
چهارشنبه 17 بهمن 1386, 20:29 عصر
سلام

یه تغییرات کوچیکی دادم تو سورستون (البته کامنت کردم)
اگه جائیشو نفهمیدین بگین توضیح بدم . :لبخندساده:


من نمی دونم چیکار کنم که اتصال عکس با TextBox قطع بشه و دیگه از همدیگه جدا بشن ، و اجازه دستکاری فایل مربوط به عکس رو به من بده.

:متفکر::متفکر::متفکر:

موفق باشید

arashkey
جمعه 19 بهمن 1386, 01:50 صبح
مشکل حل نشد، در واقع اصلا تفاوتی نکرد
قرار بود من بتونم یک عکس رو از روی هارد پاک کنم ، در حالی که اون عکس داخل Picture box لود شده بود.ولی الان با توجه به چیزی که شما نوشتید :) هنوز همون مشکل وجود داره

ghafoori
جمعه 19 بهمن 1386, 10:56 صبح
دوست عزیز کد اقای یاوری را به این صورت تصحیح کنید مشکل حل می شود


Dim strPath As String = Application.StartupPath & "\Image"
Dim strFilePath As String = strPath & "\1.jpg"
Dim stream As IO.FileStream
Private Sub picTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picTest.Click
If IO.File.Exists(strPath) Then
Else
If MessageBox.Show("آیا مایل به درج عکس هستید", "درج عکس", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
If dlgOpen.ShowDialog() = Windows.Forms.DialogResult.OK Then
MsgBox(dlgOpen.FileName)
picTest.Image = Drawing.Image.FromFile(dlgOpen.FileName)
saveImage(dlgOpen.FileName)
picTest.Image = Drawing.Image.FromFile(dlgOpen.FileName)
End If

End If
End If
End Sub
Sub saveImage(ByVal strFileName As String)
'If IO.File.Exists(strFileName) Then
If Not IO.Directory.Exists(strPath) Then
IO.Directory.CreateDirectory(strPath)
End If
If IO.File.Exists(strFilePath) = True Then
picTest.Image = Nothing
stream.Close()
IO.File.Delete(strFilePath)
End If
IO.File.Copy(strFileName, strFilePath)
'End If
End Sub

Private Sub frmTestPic_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If IO.File.Exists(strFilePath) Then
stream = New IO.FileStream(strFilePath, IO.FileMode.Open)

picTest.Image = Drawing.Image.FromStream(stream)
End If
End Sub

این هم خود پروژه
14486