PDA

View Full Version : سوال: ذخیره نشدن عکس روی هارد



aliBahramy
شنبه 01 آبان 1395, 20:36 عصر
با سلام دوستان یک مشکل عجیب برام پیش اومده
من یک عکس را تبدیل به بایت کردم و درون دیتابیس ذخیره کردم، حالا قراره عکس مجددا بر روی هارد ذخیره بشه
کار تبدیل از بایت به عکس انجام شده و روی سیستم خودم به خوبی کار میکند، ولی روی سیستم مشتری بدون هیچ پیغام خطایی عکسی ذخیره نمیشه
ممنون میشم کمک کنید.

try
{
if (radioButton1.Checked)
FileName = string.Format("{0}.jpeg", St.studentNumber);
else
FileName = string.Format("{0} {1}.jpeg", St.firstName, St.lastName);
Image Img = null;
Img = new Bitmap(new MemoryStream(St.TblPictures.FirstOrDefault(P => P.idStu == St.id).madrakCopy.ToArray()));
using (Image ImageToExport = Img)
{
ImageToExport.Save(string.Format("{0}/{1}", SelectedPath, FileName), System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
catch { }

mr.sirwan
شنبه 01 آبان 1395, 20:49 عصر
با سلام دوستان یک مشکل عجیب برام پیش اومده
من یک عکس را تبدیل به بایت کردم و درون دیتابیس ذخیره کردم، حالا قراره عکس مجددا بر روی هارد ذخیره بشه
کار تبدیل از بایت به عکس انجام شده و روی سیستم خودم به خوبی کار میکند، ولی روی سیستم مشتری بدون هیچ پیغام خطایی عکسی ذخیره نمیشه
ممنون میشم کمک کنید.


try
{
if (radioButton1.Checked)
FileName = string.Format("{0}.jpeg", St.studentNumber);
else
FileName = string.Format("{0} {1}.jpeg", St.firstName, St.lastName);
Image Img = null;
Img = new Bitmap(new MemoryStream(St.TblPictures.FirstOrDefault(P => P.idStu == St.id).madrakCopy.ToArray()));
using (Image ImageToExport = Img)
{
ImageToExport.Save(string.Format("{0}/{1}", SelectedPath, FileName), System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
catch { }



ابتدا بگم که اصلا لزومی به استفاده از ImageToExport نیست و شما با همون آبجکت Img میتونی عکس رو ذخیره کنی، حالا از اینا بگذریم، اون اسلش (/) چیکار میکنه اونجا؟؟؟؟!!!!!!:متفکر::متفکر:: تفکر:

تا جایی که من میدونم با وجود اون اسلش، این خط اصلا نباید کار کنه، در عجبم چطوری رو سیستم شما اجرا شده؟؟ :متعجب: باید به جای اسلش (/) از بک اسلش (\) استفاده کنین

و سوم اینکه شما بدنه catch رو اصلا پیاده سازی نکردین، انتظار دارین بهتون پیغام هم بده؟؟ :عصبانی++:

aliBahramy
شنبه 01 آبان 1395, 22:11 عصر
ابتدا بگم که اصلا لزومی به استفاده از ImageToExport نیست و شما با همون آبجکت Img میتونی عکس رو ذخیره کنی، حالا از اینا بگذریم، اون اسلش (/) چیکار میکنه اونجا؟؟؟؟!!!!!!:متفکر::متفکر:: تفکر:

تا جایی که من میدونم با وجود اون اسلش، این خط اصلا نباید کار کنه، در عجبم چطوری رو سیستم شما اجرا شده؟؟ :متعجب: باید به جای اسلش (/) از بک اسلش (\) استفاده کنین

و سوم اینکه شما بدنه catch رو اصلا پیاده سازی نکردین، انتظار دارین بهتون پیغام هم بده؟؟ :عصبانی++:

دوست عزیز به دلایل خاصی در این تاپیک بدنه catch را پاک کردم، من فقط قسمت مربوط به ذخیره عکس را گذاشتم، درون سیستم مشتری پیغام تاییده را بهم میده یعنی اصلا وارد بدنه catch نمیشه.
به این دلیل از شیء ImageToExport استفاده کردم چون در ابتدا فقط از شیء Img استفاده کرده بودم ولی سیستم پیغام میداد که عکس در حال استفاده است!!!! و نمیتونه اونو ذخیره کنه!!!!

mr.sirwan
شنبه 01 آبان 1395, 23:07 عصر
یعنی شما میگی با وجود اون اسلش (البته حرفی ندارم که اینجا دستتون خورده باشه و به جای بک اسلش (\) اسلش (/) نوشته باشین)، کد بدون هیچ خطایی اجرا میشه؟؟ دوست عزیز توی ویندوز اصلا نمیشه فایلی که توو اسمش اسلش داشته باشه رو ایجاد کرد، الان کد شما دقیقا همینکارو میکنه فرض کنین ما مسیر زیر رو به عنوان مقدار SelectedPath در نظر بگیریم:
D:\Images\New Folder
و مقدار FileName رو بصورت img.jpg در نظر بگیریم

توو خط مربوط به Save میاد آدرس رو اینجوری سرهم میکنه:

D:\Images\New Folder/img.jpg

که در اینجا اسم فایل ما کلا میشه New Folder/img.jpg که چون داخلش اسلش وجود داره قطعا باید ارور بده

شدیدا بهتون توصیه میکنم که برنامه رو Trace کنین و روند اجرای برنامه رو مرحله به مرحله بررسی کنین