PDA

View Full Version : سوال: ImageList با 4000 تا تصویر



tabatabaeefar
سه شنبه 22 تیر 1389, 19:41 عصر
سلام
من یک برنامه دارم که حدود 1000تا تصویر 500*500 پیکسلی داره.
نمی خوام کاربر به راحتی بتونه اونها رو ویرایش بکنه.
به نظرتون منطقیه با توجه به اینکه در imagelist امکان ذخیره تصاویری بزرگتر از 255*255 پیکسل رو نداریم ، تصاویر رو به 4 قسمت تقسیسم بکنم و در imagelist قرار بدم و بعد در برنامه اونها رو به هم بچسبونم.
اگر منطقی نیست لطفا راهنمایی کنید.

iman_me
سه شنبه 22 تیر 1389, 20:26 عصر
خوب چرا از بانک برای ذخیره سازی استفاده نمیکنی

mohammad.moosaei
سه شنبه 22 تیر 1389, 23:18 عصر
همون طور که دوستمون گفتن هم می تونی از بانک استفاده کنی. یا اگه نمی خوای از بانک استفاده کنی اونا رو توی فایل Xml یا حتی txt به صورت Base64 ذخیره کنی.

tabatabaeefar
پنج شنبه 24 تیر 1389, 14:34 عصر
ممنون از توجهتون.
1- اما آیا استفاده از imagelist مشکل داره؟
2-منظورتون از base64 چیه؟

mohammad.moosaei
پنج شنبه 24 تیر 1389, 15:12 عصر
ممنون از توجهتون.
1- اما آیا استفاده از imagelist مشکل داره؟
2-منظورتون از base64 چیه؟

سلام :

استفاده از ImageList رو پیشنهاد نمی کنم چون حجم برنامه خیلی بالا میره .

منظورم از Base64 اینه که عکس رو به صورت یک رشته از کاراکترها در بیاری و برای استفاده دوباره اونارو به عکس تبدیل کنی .

برای تبدی عکس به Base64 :


Private Sub Convert2Base64()

dim img = new image.FromFile("C:\SampleImage.jpg")

If Not (img Is Nothing) Then

Dim imagestream As New System.IO.MemoryStream
Dim filetype As Imaging.ImageFormat = PictureSoftware.BackgroundImage.RawFormat
PictureSoftware.BackgroundImage.Save(imagestream, filetype)
dim ImageString as string
ImageString = Convert.ToBase64String(imagestream.GetBuffer(), 0, imagestream.Length)

End If

End Sub

الان متغیر ImageString حاوی همون عکس(img) هست اما به صورت رشته ، حالا می تونی اینو تو یک فایل (ترجیحاً XML ) ذخیره کنی.

برای برگردوندنش هم میتونی از این کد استفاده کنی :


Private Sub Base64ToImage(byval Base64String as string)
Try
Dim imagebuffer As Byte() = Convert.FromBase64String(Base64String)
PictureBox1.BackgroundImage = Image.FromStream(New System.IO.MemoryStream(imagebuffer))
BackgroundImageLayout = ImageLayout.Stretch
Catch ex As Exception
End Try
End Sub

اینجا هم Base64String همون رشته ای که توی تابع قبل یه جا ذخیرش کردیم.

امیدوارم به دردت بخوره.

mohammad.moosaei
پنج شنبه 24 تیر 1389, 16:23 عصر
ممنون از توجهتون.
1- اما آیا استفاده از imagelist مشکل داره؟
2-منظورتون از base64 چیه؟

این برنامه حتما کمکتون میکنه :