پرسشکده مرجع پرسش و پاسخ فارسی ایران

مسئله‌ی مهم آن است که هرگز از سؤال‌کردن دست برندارید. برای هر حس کنجکاوی، یک پاسخ وجود دارد.

نمی دانید؟! بپرسید!

می دانید؟! پاسخ دهید!


چگونه می توان در زبان برنامه نویسی C# یک عکس را در یک stream ذخیره کرد یا بصورت آرایه از بایت ها درآورد؟

1 پاسخ 1

در مجموعه دات نت کتابخانه های پویای (dll) بسیاری وجود دارد که با استفاده از آنها تولید و توسعه برنامه ها بسیار راحت و سریع انجام می پذیرد.

برای کار با عکس ها کلاس های آماده ای در کتابخانه System.Drawing.dll تعبیه شده است. برای تبدیل یک عکس به آرایه ای از بایت ها می توان از تابع System.Drawing.Image.Save استفاده کرد.

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
 همانطور که در مثال بالا مشاهده می کنید، ابتدا یک شی از کلاس MemoryStream تولید شده است. این کلاس یک استریم (stream) در حافظه ram کامپیوتر فراهم می آورد. سپس عکس موردنظر در این استریم ذخیره شده است. هنگام ذخیره سازی می توان با استفاده از کلاس System.Drawing.Imaging.ImageFormat فرمت خاصی را مشخص کرد. در این مثال تصویر با فرمت GIF در stream ذخیره شده است.

اگر یک تصویر بصورت آرایه ای از بایت ها باشد و بخواهیم آن را تبدیل به شیء ای از کلاس  System.Drawing.Image کنیم، می توانیم از تایع Image.FromStream استفاده کنیم.

public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
در مثال بالا آرایه حاوی عکس به سازنده کلاس MemoryStream ارسال شده است. سپس با استفاده از Image.FromStream تصویر موجود در این stream به Image تبدیل شده است.
 




عبارت های جستجو شدهعبارت های جستجو شده

() (چگونه می توان در زبان c#)