PDA

View Full Version : ذخیره ی عکساز picturebox در سیستم



amir.nett
پنج شنبه 28 اردیبهشت 1391, 19:09 عصر
با سلام خدمت دوستان ...

من میخوام عکس و یا گرافیکی که در یک پیکچر باکس رسم کرده ام بروی سیستمم ذخیره کنم ...
از این کد استفاده کردم ...


Dim fsd As New SaveFileDialog
fsd.FileName = OpenFileDialog1.FileName
fsd.Filter = "bmp Files|*.bmp"

If fsd.ShowDialog() = Windows.Forms.DialogResult.OK Then

PictureBox1.Image.Save(fsd.FileName, Imaging.ImageFormat.Jpeg)

End If

ولی هنگام انتخاب مسیر با این اخطار روبه رو می شوم ...


Object reference not set to an instance of an object.

لطفاً کمک کنید ... ممنون

فرید نجفلو
پنج شنبه 28 اردیبهشت 1391, 19:30 عصر
سلام
باید می گفتید دقیقا تو کدوم خط خطا می گیره
مطمئن بشیو عکس رو تو PictureBox1 لود کردین
این خط واسه چیه؟
fsd.FileName = OpenFileDialog1.FileName
راستی شما با فرمت Jpeg ذخیره می کنید و فیلتر Bmp گذاشتید!

amir.nett
پنج شنبه 28 اردیبهشت 1391, 19:32 عصر
توی قسمت

PictureBox1.Image.Save(fsd.FileName, Imaging.ImageFormat.Jpeg)

خطا می گیره اون فیلتره jpg و bmp اشتباهی شده بود ...

xxnagin
پنج شنبه 28 اردیبهشت 1391, 19:43 عصر
سلام
شما یا باید از PictureBox1.BackgroundImage استفاده کنید یا از PictureBox1.Image
وقتی شما در قسمت open از BackgroundImage استفاده کردید تو قسمت save از Image استفاده میکنید و
به همین خاطر Object reference not set to an instance of an object رو میده
که تو این موقع عکسی یافت نمیشه که save کنه
و imageformat اینجا کاربرد نداره
یا تغییر از ChangeExtension استفاده کنید

PictureBox1.BackgroundImage.Save(IO.
Path.ChangeExtension(SaveFileDialog1.FileName, ".jpg"),
Imaging.ImageFormat.Jpeg)
یا
IO.Path.GetFileNameWithoutExtension(SaveFileDialog 1.FileName &
".jpg")

amir.nett
پنج شنبه 28 اردیبهشت 1391, 20:27 عصر
نه دوست عزیز باز هم همان اخطار قبلی در JPG در قسمت

SaveFileDialog1.FileName, ".jpg"

بگم که این یک برنامه ی Paint هست و در داخل Picturebox علاوه بر عکس از گرافیک همچون خط و دایره و مستطیل استفاده شده است ...

M.KH-SH
پنج شنبه 28 اردیبهشت 1391, 20:32 عصر
با اجازه آقا فرید گل گلاب:

Dim i As New IO.MemoryStream
PictureBox1.Image.Save(i, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim b() As Byte = i.GetBuffer
IO.File.WriteAllBytes("c:\1.jpg", b)

amir.nett
پنج شنبه 28 اردیبهشت 1391, 21:13 عصر
نه آقا باز هم همون اخطار قبلی ... کلاً برنامه رو قرار میدم ... مشکل من در خط 62 شروع می شه ... ممنون میشم کمکم کنید ...

دانلود (http://s3.picofile.com/file/7384174836/Project.rar.html)

xxnagin
پنج شنبه 28 اردیبهشت 1391, 21:14 عصر
این یه برنامه نقاشی (http://www.codeproject.com/Articles/16291/Very-Simple-Paint)
همون چیزی که می خواین

amir.nett
پنج شنبه 28 اردیبهشت 1391, 21:22 عصر
نه دوست عزیز من این پروژه رو باید به استاد تحویل بدم ...شخصی نیست ... بعد هم باید بتونم درباره اش صحبت بکنم چیزی ازش بفهمم ...لینک دانلود پروژه ام رو گذاشتم ...
اگه کسی بتونه مشکلشو بگه خیلی ممنون می شم ...


دانلود پروژه (http://s3.picofile.com/file/7384174836/Project.rar.html)

M.KH-SH
پنج شنبه 28 اردیبهشت 1391, 21:57 عصر
دوست عزیز ببین میتونی روشی جز drawing پیدا کنی برای نقاشی کشیدن و رسم خطوط؟

این برنامه تازه اگه سیو هم درست بشه با یک مین و ماکس کردن صفحه تمام رسم ها پاک شده اینم به خاطر استفاده از توابع drawing هستش


اگه این مشکل رو حل کردی مشکل بعدی هم خود به خود حل میشه

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

برای سیو کردن بجای اینکه از me.backgroundimage استفاده کنی یک متغییر bitmap بساز و از اون استفاده کن

amir.nett
پنج شنبه 28 اردیبهشت 1391, 22:02 عصر
دوست عزیز شما درست می گید ... با این حال یک متغیر از نوع bitmap ساختم و ازش استفاده کردم ... تصویر سیو شد بدون خطا ولی عکس سیو شده کلاً سیاه است و چیز دیگری نیست ...

در ضمن من حتماً باید از همین drawing ستفاده کنم ...

xxnagin
پنج شنبه 28 اردیبهشت 1391, 22:14 عصر
شما باید از کلاس bitmap برای save استفاده کنید

Dim bmp As New Bitmap(picImg.Width, picImg.Height)

نمونه پروژه بالا اون قسمتها رو داره
کدهای مورد استفاده رو بردار
PictureBox1.BackgroundImage.Save
خالی هستش و اون خطا رو میده

amir.nett
پنج شنبه 28 اردیبهشت 1391, 22:20 عصر
دوست عزیز بازم ممنون ولی گفتم من از این روش استفاده کردم و عکس سیو شد ...
ولی عکس سیو شده کاملاً سیاه است

کاظم فلاحی خواه
جمعه 29 اردیبهشت 1391, 00:17 صبح
سلام دوست عزیز پروژه تون ویرایش شد .
مطمئنا ایراداتی داره پست بدید ما همگی در خدمتیم . کمکتون می کنیم.

من نسخه 2008 ندارم با NOTEPad++ سولوشن رو ویرایش کردم برای 2008 هم کار میکنه چون با دات نت 3.5 ویرایش کردم با تغییر کد ها روی 2008 هم میاد .

برای VS2010
87171

برای VS2008
87170

با تشکر ./
http://akfacorporation.persianblog.ir/

amir.nett
جمعه 29 اردیبهشت 1391, 02:45 صبح
ممنون دوستان ... مخصوصاً kazemfallahi1371 ...
از xxnagin و Farid.N و M.KH-SH هم ممنون که وقت گذاشتم ... مشکلم حل شد ... دست شما درد نکنه...