مشکل در تبدیل آرایه بایتها به عکس
سلام بکس آقا من عکسی که تو بانک اطلاعاتی ذخیره کردم وقتی میام میخونمش و میخوام اون رو ارسال کنم به سمت استیمول ریپورت یه استثنا تولید میکنه که مسیجش اینه :
A generic error occurred in GDI+.
بعد این اتفاق یه جا دیگم میفته اونم وقتی که من عکس رو از بانک میخونم میدم به یه کنترل پیکچر باکس و بعد همون عکس پیکچر باکس رو دوباره میخوام به باینری تبدیل کنم بازم این استثنا میاد
این کد های تبدیل من به باینری و بلعکس :
/// <summary>
/// Convert a image to byte type to save in databases
/// </summary>
/// <param name="imgData">a Image data value that passing image to convert</param>
/// <returns>a array of byte datas that passing image bytes</returns>
public static byte[] ConvertImageToByte(Image imgData)
{
if (imgData == null)
{
throw new NullReferenceException("Chech Image Value Your Data Is Null.");
}
byte[] imgArray;
using (MemoryStream msImage = new MemoryStream())
{
imgData.Save(msImage, System.Drawing.Imaging.ImageFormat.Jpeg);
imgArray = msImage.ToArray();
}
return imgArray;
}
/// <summary>
/// Convert a array of bytes to a image data value
/// </summary>
/// <param name="imgArray">a array of byte data values that passing byte of image</param>
/// <returns>a image data value that passing result image data value</returns>
public static Image ConvertByteToImage(byte[] imgArray)
{
if (imgArray.Length == 0)
{
throw new NullReferenceException("Chech Image Array Value Your Array Is Null.");
}
Image imgResult;
using (MemoryStream msImage = new MemoryStream(imgArray))
{
imgResult = Image.FromStream(msImage);
}
return imgResult;
}
دمتون گرم راهنمایی لطفا؟
نقل قول: مشکل با ارسال تصویری که از بانک خوندم به سمت گزارش (استیمول)
من برای اینکه تتصویری که دارم در دیتابیس رو بفرستام برای چاپ این کار رو میکنم اول اون تصویر رو داخل کادر تصویر فرم نمایش میدم و بعد میام اون تصویر رو میگیرم و میفرستم به استیمول ولی یه ابزار تصویر قرار میدم و اسم روش میزارم و از طریق استیمول که تصویر رو بهش ارسال کردم نمایش میده.
این کد ارسال تصویر برای چاپ (stiReport.GetComponentByName("pictureBox1") as StiImage).Image = pictureBox1.Image;
نقل قول: مشکل با ارسال تصویری که از بانک خوندم به سمت گزارش (استیمول)
مسله اینجاست جز نمایش اون عکس تو کنترل پیکچرباکس سی شارپ هیچ جای دیگه نمیتونم استفاده کنم ( منظورم بایت هایی هست که از بانک خوندم و به تصویر تبدیل کردم) نه میتونم جایی ذخیرش کنم نه به جز پیکچر باکس سی شارپ جایی نمایش بدم همش استثنای زیر رو میده :
A generic error occurred in GDI+.
نقل قول: مشکل با ارسال تصویری که از بانک خوندم به سمت گزارش (استیمول)
شما میخواهید اون تصویر رو که داخل کادر تصور هستش بیرون باز ذخیره کنید.یعنی روی ویندزتون میخواهید ذخیره کنید.
نقل قول: مشکل با ارسال تصویری که از بانک خوندم به سمت گزارش (استیمول)
در متد ConvertByteToImage چون از using استفاده کردی وقتی برنامه به خط return imgResult; میرسه دیگه استریم از بین رفته و چون تصویر imgResult به استریم وابسته هست با از بین رفتن استریم استثنا رخ میده.
یک bitmap بساز و اونو return کن.
using (MemoryStream memoryStream = new MemoryStream(imgArray))
{
imgResult = new Bitmap(Image.FromStream(memoryStream));
}
نقل قول: مشکل با ارسال تصویری که از بانک خوندم به سمت گزارش (استیمول)
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
در متد ConvertByteToImage چون از using استفاده کردی وقتی برنامه به خط
return imgResult; میرسه دیگه استریم از بین رفته و چون تصویر imgResult به استریم وابسته هست با از بین رفتن استریم استثنا رخ میده.
یک bitmap از روی imgResult بساز و اونو return کن.
using (MemoryStream memoryStream = new MemoryStream(imgArray))
{
imgResult = new Bitmap(Image.FromStream(memoryStream));
}
ممنون استاد حل شد