PDA

View Full Version : آموزش: تبدیل Image به رشته و بالعکس (ذخیره و بازیابی)



ROSTAM2
سه شنبه 02 مهر 1392, 04:17 صبح
کلاس StreamImage:

Public Class StreamImage

Shared Function FromString(ByVal Value$) As Image

Dim M As IO.Stream, Img As Image

M = New IO.MemoryStream(Convert.FromBase64String(Value))

M.Position = 0

Img = If(M Is Nothing, Nothing, Image.FromStream(M))

M.Close

Return Img

End Function

Shared Function FromFile$(ByVal file$)

Return Convert.ToBase64String(IO.File.ReadAllBytes(file))

End Function

End Class



Save Image To Text File:


Dim StringStream$ = ""
StringStream = StreamImage.FromFile("ImageFilePath")
Io.File.WriteAllText("FilePath", StringStream)



Load Image From Text File:


Dim StringStrm$ = ""
StringStrm = Io.File.ReadAllText("FilePath")
PictureBox1.Image = StreamImage.FromString(StringStrm)

Omid.R.A.Candy
سه شنبه 02 مهر 1392, 04:57 صبح
چیز خوبیه ! مرسی این کارو من کرده بودم خواستم برا فایل صوتی هم بکنم که نتونستم شاید من بلد نبودم چطوری!

ببینید همین کارو می تونید با فایلهای wav بکنید؟

goldpower
سه شنبه 02 مهر 1392, 22:27 عصر
چیز خوبیه ! مرسی این کارو من کرده بودم خواستم برا فایل صوتی هم بکنم که نتونستم شاید من بلد نبودم چطوری!

ببینید همین کارو می تونید با فایلهای wav بکنید؟


' load file into a byte array
Dim data As Byte() = File.ReadAllBytes(filename)
' convert the byte array to base64
Dim str As String = Convert.ToBase64String(data)
' write the string to a file
File.WriteAllText(newFilename, str)

Omid.R.A.Candy
سه شنبه 02 مهر 1392, 23:34 عصر
حالا چطوری دوباره فایل رو بسازیم و بخونیمش یا play اش کنیم؟

تا ایجاش رو من قبلا رفته بودم.بعد از اینش رو نتونستم برم.بطور مثال ما یه فایل wav رو می خونیم و به صورت بایت در یه جایی ذخیرش می کنیم حالا چطوری کد زیر رو برای play کردنش کد نویسی کنیم؟



My.Computer.Audio.Play("wav file will be here!", AudioPlayMode.Background)

مهرداد صفا
چهارشنبه 03 مهر 1392, 11:09 صبح
با سلام.
شما فایل را به صورت رشته می خوانید و به Byte() تبدیل می کنید. از بایتهای به دست آمده یک MemoryStream ساخته و با استفاده از آن یک SoundPlayer. به این صورت:


dim Player as new System.Media.SoundPlayer(new System.IO.MemoryStream(Convert.FromBase64(System.I O.File.ReadAllText(FileName))))
Player.Play()

Omid.R.A.Candy
چهارشنبه 03 مهر 1392, 12:23 عصر
با سلام.
شما فایل را به صورت رشته می خوانید و به Byte() تبدیل می کنید. از بایتهای به دست آمده یک MemoryStream ساخته و با استفاده از آن یک SoundPlayer. به این صورت:


dim Player as new System.Media.SoundPlayer(new System.IO.MemoryStream(Convert.FromBase64(System.I O.File.ReadAllText(FileName))))
Player.Play()

سلام

با عرض معذرت خدمت استاد خودم:
اولا ما فایل رو به صورت رشته نمی خونیم بلکه آدرس فایل رو می دیم سپس فایل به صورت بایت خوانده میشه.
دوما وقتی این مجموعه آرایه ها خونده شدن و یا به عبارت صحیح تر تو حافظه تشکیل شدن اونها رو به یک آبجکت واحدی بنام ToBase64String می ریزیم.که معنا و مفهوم ToBase64String برای من گنگه اگه میشه در مورد ToBase64String بیشتر توضیح بدین.
ثالثا کدهاتون خطا داره و برنامه اجرا نمیشه.
رابعا من امدم و یک فایل wav رو به بایت تبدیل و سپس به ToBase64String تبدیل کرده و ب یک نامی و با پسوند txt ذخیرش کردم.و دیدم که حجم فایل تبدیلی wav بیشتر از حالت اصلیشه!!! برای کاهش حجم فایل txt چه باید کرد؟ من یه چیزی تو ذهنم هست ولی نمی دونم جواب میده یا نه؟! و یا اصلا چطوری کدش کنم و اون اینه که بایتهای خونده شده رو به هگزا تبدیل کنیم تا حجم فایل txt بیاد پایین.

mahdi.a.v
چهارشنبه 03 مهر 1392, 16:51 عصر
میشه یکی بگه دقیقا با این کد چی کار میشه کرد ؟؟؟!!!!

من یه عکسو بهش دادم ; تبدیل کرد به یک یه text خیلی بزرگ ...

Code-up
چهارشنبه 03 مهر 1392, 23:27 عصر
سلام
کاش میشد همین کدها رو در قالب یک مثال آماده تهیه می کردید تا برای ما آماتورها قابل تجزیه و تحلیل باشه.

Omid.R.A.Candy
جمعه 05 مهر 1392, 00:02 صبح
اساتید پس کجا هستن؟!

ROSTAM2
یک شنبه 22 خرداد 1401, 08:43 صبح
میشه یکی بگه دقیقا با این کد چی کار میشه کرد ؟؟؟!!!!

من یه عکسو بهش دادم ; تبدیل کرد به یک یه text خیلی بزرگ ...

سلام مجدد. پس از قرن ها :لبخند:
توی پست اول یک کلاس ساخته شده که می شه یک فایل تصویری رو به رشته تبدیل کرد و بعنوان رشته توی یک فایل متنی ازش استفاده کرد.
حالا کاربردش چیه؟!
زمانی هست که ما می خوایم یک فایل خروجی متنی (e.x: xml) برای ی نرم افزار داشته باشیم که بهمراه اطلاعات دیگه تصویر هم توی اون فایل خروجی داشته باشیم و مطمئنا باید بصورت رشته باشه، و این کلاس در این مورد می تونه به ما کمک کنه.
و همینطور برای جاسازی تصویر در تگ Img از سند HTML که این دومیه کاربرد بیشتری داره:
نمونه: https://www.w3docs.com/snippets/html/how-to-display-base64-images-in-html.html

ROSTAM2
یک شنبه 22 خرداد 1401, 09:09 صبح
سلام

من امدم و یک فایل wav رو به بایت تبدیل و سپس به ToBase64String تبدیل کرده و ب یک نامی و با پسوند txt ذخیرش کردم.و دیدم که حجم فایل تبدیلی wav بیشتر از حالت اصلیشه!!! برای کاهش حجم فایل txt چه باید کرد؟ من یه چیزی تو ذهنم هست ولی نمی دونم جواب میده یا نه؟! و یا اصلا چطوری کدش کنم و اون اینه که بایتهای خونده شده رو به هگزا تبدیل کنیم تا حجم فایل txt بیاد پایین.

شما هر جور تبدیلی داشته باشی بالاخره حجم فایل ایجاد شده بیشتر از حجم فایل اصلی می شه.