PDA

View Full Version : ساخت عکس bmp از آرایه



milad.bm
جمعه 04 اردیبهشت 1394, 19:50 عصر
با سلام
من یه آرایه دارم که طولش هزار هست و میخوام با اعداد درون این آرایه، عکس با طول و عرض دلخواه بسازم
اعداد درون آرایه هشت بیتی بوده و برای هر پیکسل از یک بایت استفاده میکنیم(عکس سیاه و سفید)
مثلا اگه بخوام عکس 100*10 بسازم باید چیکار کنم؟

hi level hdd
شنبه 05 اردیبهشت 1394, 09:39 صبح
سلام
System.Drawing.Bitmap p = new System.Drawing.Bitmap(width, height, Width * bitperpixel, System.Drawing.Imaging.PixelFormat.Format8bppIndex ed, IntPtr);
stride
گام حرکت هست. اگر یک بایت به ازای هر زنگ دارید می تونید همون مقدار width رو قرار بدید.
intptr
اولین خونه آرایه خام رنگیتون هست. که با کمی جستجو می تونید خونه اولش رو به صورت اشاره گر بگیرید.

ali_72
شنبه 05 اردیبهشت 1394, 14:51 عصر
با سلام
من یه آرایه دارم که طولش هزار هست و میخوام با اعداد درون این آرایه، عکس با طول و عرض دلخواه بسازم
اعداد درون آرایه هشت بیتی بوده و برای هر پیکسل از یک بایت استفاده میکنیم(عکس سیاه و سفید)
مثلا اگه بخوام عکس 100*10 بسازم باید چیکار کنم؟

ببخشید میلاد جان میتونم بپرسم کجا استفاده میکنی؟
یهنی کجاست که میشه از یه آرایه اعداد برای تبدیل به عکس استفاده کرد؟
البته اگه دوست داشتی جواب بده
من رو پردازش تصویر کار میکنم
میخوام یه مستطیل تو تصویر رو تشخیص بدم تصویر من سیاه و سفید هست
با کتابخونه opencv نتونستم به نتیجه دلخواهم برسم
همیشه باید پارامترها رو تغییر بدم

و اینکه میخوام مساحت مستطیل رو حساب کنم

milad.bm
شنبه 05 اردیبهشت 1394, 16:56 عصر
ما پسوند raw یا همون فایل خام داریم که معمولا کاملترین نوع ذخیره سازی هست و در این نوع فایل ها هیچگونه عملیات فشرده سازی انجام نمیشه.
این فرمت به صورت خام که تو برنامه میتون داخل یه آرایه بریزیش

linux
شنبه 05 اردیبهشت 1394, 23:53 عصر
با سلام
من یه آرایه دارم که طولش هزار هست و میخوام با اعداد درون این آرایه، عکس با طول و عرض دلخواه بسازم
اعداد درون آرایه هشت بیتی بوده و برای هر پیکسل از یک بایت استفاده میکنیم(عکس سیاه و سفید)
مثلا اگه بخوام عکس 100*10 بسازم باید چیکار کنم؟

اتفاقا چند وقت پیش از سر کنجکاوی دنبال استخراج دیتا از فایلهای bmp بودم. این کد همون شاید چیزی باشه که لازم داری ورودی تابع یک آرایه هست که نقطه شروع ‫{۰،۰} را مشخص می کندو بعدی عرض و طول عکس و آخری هم نوع عکس.

public Bitmap CreateBmpFromData(byte[] data, int w, int h, PixelFormat pf) {


var bmp = new Bitmap(w, h, pf);
var rect = new Rectangle(0, 0, w, h);
var bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, pf);
var ptr = IntPtr.Subtract(bmpData.Scan0, 0);

Marshal.Copy(data, 0, ptr, data.Count());
bmp.UnlockBits(bmpData);
return bmp;
}