PDA

View Full Version : ذخیره و بازیابی چندین تصویر در یک فایل



amirsajjadi
دوشنبه 30 مهر 1386, 10:08 صبح
من میخوام چندتا تصویر PNG رو توی یک فایل (بانک اطلاعاتی نباشه) ذخیره و بازیابی کنم
مثل آیکون های ویندوز که توی یک DLL هستند
چطوری این کار رو انجام بدم ؟

amin_iman82
سه شنبه 21 اسفند 1386, 13:11 عصر
آقای سجادی من امین پارسی هستم.
خیلی خیلی خوشحال شدم اینجا پیدات کردم.

تصاویرتو به صورت باینری بازکن و داخل متغیرهائی از نوع Variant بریز و برای ذخیره کردن داخل فایل یه کلید واسه خودت انتخاب کن مثلا:
/pic1
variant1
/pic1

این طوری تمام تصاویرت توی یه فایل ذخیره میشه و زمان خواندن میتونی فایل رو باز کنی و از شروع عکس اول تا آخرشو بخونی و بریزی تو یه متغیر و ازش استفاده کنی.

یه نمونه برنامه که میتونه یه عکس رو باز کنه و دوباره ذخیره کنه گذاشتم دانلود کنی ولی با vb6 نوشته شده ، راستش تو دات نت با فایل های باینری کار نکردم خودت زحمتشو بکش به VB.net تبدیلش کن دیگه.

اگه دوست داشتی بگو برات یه مثال کامل بنویسم.
موفق باشی

amirsajjadi
سه شنبه 21 اسفند 1386, 21:35 عصر
سلام امین جان
ممنونم ولی مشکل من این نیست ، در واقع میخوام یک DLL درست کنم دقیقا مثل SHELL32.dll خوذ ویندوز

sinpin
سه شنبه 21 اسفند 1386, 23:41 عصر
سلام امین جان
ممنونم ولی مشکل من این نیست ، در واقع میخوام یک DLL درست کنم دقیقا مثل SHELL32.dll خوذ ویندوز
یک مثال گویاتر عکسهای بازیهای پاسور ویندوز است که درون Dll ای بنام Cards.dll قرار دارند:
http://www.codeproject.com/info/search.aspx?artkw=cards.dll&sbo=kw
___________________________________


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


If you think there is not much difference, then load the file imageres.dll from Windows\System32 in Windows Vista (11MB), do a for loop for all images and set the encoder to be BMP instead PNG, then save it to a DLL or a ICL file. You will notice that the DLL is about 45MB and the ICL about 54MB. This is where you can see that PNG really makes the difference.
http://www.codeproject.com/KB/cs/IconLib.aspx

amin_iman82
چهارشنبه 22 اسفند 1386, 09:12 صبح
امیرجان متوجه شدم چی میخوای.
شما میخوای یه exe یا dll داشته باشی که وقتی با یه ResourceHacker بازش میکنی چندتا عکس توش باشه یا ازش ShortCut که میگیری چندتا آیکان توش باشه.

درباره ImageList که دوستمون گفتن مطمئن نیستم ولی فکر نکنم کارت با اون حل بشه.
شما باید از Resuorce استفاده کنی اما...

من قبلا تو VB6 وقتی چندتا آیکان به Resource برنامه اضافه میکردیم همون چیزی میشد که شما میخوای ولی الان تو Vb.net امتحان کردم نشد (چندتا آیکان به Resource اضافه کردم ولی بعد از کامپایل فایل exe فقط یه آیکان داشت)

میشه برنامه رو که نوشتی و کامپایل کردی با این برنامه که گذاشتم فایل های مورد نیاز رو به exe یا dll خودت اضافه کنی.

این جهش که مجبور شدم از VB6 به VB.net انجام بدم ، منو خیلی عقب کشید :ناراحت:
الان خیلی وقته دات نت کار میکنم. درسته خیلی از امکانات رو آماده کرده و برنامه نوشتن باهاش راحتتر ولی هنوز خیلی از ترفندهائی که توی VB6 میشد انجام داد رو تو VB.net پیدا نکردم.

amirsajjadi
چهارشنبه 22 اسفند 1386, 13:36 عصر
امین جان اگه من بخوام DLL رو توی برنامم اضافه کنم و از آیکون های توش استفاده کنم چی ؟
خودم یک راهی رو رفتم اونم اینه که یک آرایه از نوع Image توی DLL به صورت Public تعریف کردم و تمام تصاویر رو توی اون آرایه ریختم بعد وقتی DLL رو توی پروژم اضافه میکنم از اون آرایه استفاده میکنم ولی SHELL32 ویندوز اینطوری نیست
دستت درد نکنه

Pouria.NET
چهارشنبه 22 اسفند 1386, 15:19 عصر
باید از یک Resource File استفاده کنی با فرمت resx .
کد زیر رو ببین
این کد برای ایجاد کردن یک Resource file و اضافه کردن یک تصویر bmp و یک String به همون فایله

Imports System.Resources

'this is written by pouria WT
Public Class MainForm
Private Sub btnGenResX_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnGenResX.Click
' Make an resx writer & specify the addressfile to write to.
Dim w As ResXResourceWriter = New ResXResourceWriter("C:\ResXForm.resx")
' Add happy a bmp file to this resource.
Dim bMap As Bitmap = New Bitmap("someImage.bmp")
w.AddResource("happyDude", bMap)
'add a string to resource file
w.AddResource("welcomeString", "Hello new resource format!")
' Commit it.
w.Generate()
w.Close()
End Sub
End Class

Pouria.NET
چهارشنبه 22 اسفند 1386, 15:21 عصر
البته اگه نخواین که با Code این کار رو بکنید در Visual Studio براحتی می تونید Resource ها تون رو Add کنید