PDA

View Full Version : باز کردن bmp در tcc



star462
سه شنبه 18 فروردین 1388, 11:05 صبح
انگار انجا اگه کسی تاپیک جدید نزه کسی به سوال آدم توجه نمیکنه؟:عصبانی++:
لطفا توجه کنید :لبخند:
خوب
من سوالم اینه که اگر بخوام یک فایل با پسوند Bmp توی tcc باز کنم دقیقا چه کار هایی باید انجام بدم؟
این فایل نقاشی من سیاه و سفید! آیا نیاز به داشتن اطلاعاتی در زمینه گرافیک هست؟

pswin.pooya
سه شنبه 18 فروردین 1388, 12:13 عصر
سلام
برای باز کردن فایل میتونی از کتابخونه Devil استفاده کنی:

http://openil.sourceforge.net/

این کتابخونه پسوندهای زیادی رو باز میکنه. یه راه دیگه هم اینه که هدر فایل bmp ( اگه اشتباه نکنم 6 بایت اول فایل رو میتونی حذف کنی.)

یه کتاب ترجمه شده نسبتا قدیمی هستش که بعضی از قالبهای معروف رو شرح داده. اسمش دقیقا یادم نیستش ولی یه چیزی تو مابه های قالب فایلهای تصویری بودش.

star462
سه شنبه 18 فروردین 1388, 13:57 عصر
مرسی
ولی من که چیزی سر در نیاوردم از این لینک شما
میشه فارسی توضیح بدین و بگین از چه دستورایی باید استفاده کنم
پیکسل ها رو چه جوری ذخیره کنم؟مزسی

pswin.pooya
سه شنبه 18 فروردین 1388, 17:34 عصر
مرسی


1. به جای پست از دکمه تشکر استفاده کنید.


ولی من که چیزی سر در نیاوردم از این لینک شما
میشه فارسی توضیح بدین و بگین از چه دستورایی باید استفاده کنم
پیکسل ها رو چه جوری ذخیره کنم؟مزسی

در قسمت تمرینها مثالهای متعددی آورده شده:
http://openil.sourceforge.net/tuts/index.htm

مثال لود کردن تصویر:
http://openil.sourceforge.net/tuts/tut_5/index.htm
مثال ذخیره کردن:
http://openil.sourceforge.net/tuts/tut_6/index.htm

اول از همه binary win32 رو داونلود کن. بعدش فایهای dll رو تو مسیر برنامه و یا مسیر C:\windows\system32 کپی کن. و بعد از اون فایلهای هدر رو داخل پوشه Include و فایلهای lib رو داخل پوشه Lib بریز. بعد از اون قسمت زیر رو به اول فایل برنامت اضافه کن:


// Include DevIL.
#include "IL/il.h"
#include "IL/ilu.h"
#include "IL/ilut.h"

#ifdef WIN32
#pragma comment(lib, "DevIL.lib")
#pragma comment(lib, "ilu.lib")
#pragma comment(lib, "ilut.lib")
#endif // WIN32



بعد از این مراحل تکه کد زیر رو به برنامت بعد از main اضافه کن تا devil مقدار دهی اولیه بشه و بتونه کار کنه:


ilInit ();

و بعد از این مراحل مطابق با تمرینها کار کن. من نحوه ست کردن devil رو با tcc بلد نیستم و به نظر من بهتر tcc رو کنار بگذاری و Visual C++ استفاده کنی.

اگر بازم متوجه نشدی بگو مثال MS VC++ 9 رو بذارم.

star462
چهارشنبه 19 فروردین 1388, 19:05 عصر
شما خیلی سخت توضیح دادین هیچی نگرفتم :ناراحت:
من میخوام عکس رو اول باز کنم بعد توی ماتریس اسپارس بریزم بعدش ماتریس رو نمایش بدم
که همون عکس ذخیره شده ی خودمه!

pswin.pooya
چهارشنبه 19 فروردین 1388, 22:31 عصر
سلام.
فکر نکنم این کارها رو بتونی به همین راحتی انجام بدی. تا فردا شب براتون یه نمومه کد میذارم. میخوای پردازش تصویر کار کنی؟

star462
پنج شنبه 20 فروردین 1388, 10:09 صبح
بزارین توضیح بدم منظوره من چیه؟
اول برنامه paint باز کردم از قسمت image_> attributنقاشی را از نوع پیکسلی 32*32 سیاه سفید انتخاب کردم بعد یه مربع و خطوط کج رسم کردم بعد از image_>inverst color جای رنگارو عوض کردم (نقاط سیاه افزایش دادم )مختصات نفاط مربعی و خطوط کج را نوشتم و در حالته monochrome bitmap ذخیره کردم از اینجا به بعدش رو از شما کمک خواستم که چه جوری توی کامپایلری که تو محیط dos کار میکنه اینو باز کنم؟

star462
پنج شنبه 20 فروردین 1388, 10:24 صبح
[html][http://www.4shared.com/dir/14388460/9a902ac6/sharing.html/HTML]
اینم عکسشه :لبخند:

pswin.pooya
پنج شنبه 20 فروردین 1388, 19:20 عصر
فکر نکنم بشه با tcc اینکار رو انجام داد.
یعنی از Devil استفاده کردش!.

star462
یک شنبه 06 اردیبهشت 1388, 21:35 عصر
سلام
من تا اینجا نوشتم ولی کامپایلر نمیشه و میگه مشکلش در قسمته fopen هستش ولی نمی دونم چه طور حلش کنم میشه راهنماییم کنین؟!
مرسی

#include <iostream.h>

#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <fstream.h>
int main()
{
fstream fp;
int ch[32][32];
fp=fopen("f:\tcc\test.bmp",ios::binary);
for( int i=0;i<=32;i++)
for( int j=0;j<=32;j++)
fp<<ch[i][j];
for( int k=0; k<=32;k++)
for (int l=0; l<=32; l++)
if ( ch[k][l]=1)
cout<<"1";
else cout<<"0";

getch();
return 0;
}

pswin.pooya
دوشنبه 07 اردیبهشت 1388, 00:47 صبح
به جای
f:\tcc\test تایپ کن:
f:\\tcc\\test و یا f:/tcc/test

و به جای ios::binary از "r +b " استفاده کن.

البته یه مورد دیگه هستش و اونم اینه که تا اونجا که من میدونم fstram رو نمیشه با دستور fopen استفاده کرد.


fstream* fileptr;
filePtr = new std::fstream("c:/me.bmp",std::ios::in | std::ios::binary);

user68
پنج شنبه 17 دی 1388, 21:36 عصر
با سلام
من یه جا خوندم که برای لود کردن تصویر باید از این کد استفاده کنیم ولی این کد جواب نمیده و فقط کله صفحه رو زرد میکنه در صورتی که تصویر من یه ساعته!



#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
main()
{
int gdriver = DETECT, gmode;
int i,j,c;
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
FILE *f;
fopen("c:\\a.bmp","r");
for(i=0;i<=getmaxx();i++)
for(j=0;j<=getmaxy();j++)
{
fscanf(f,"%d",&c);
putpixel(i,j,c);
}
fclose(f);
getch();
closegraph();
}



ممنون میشم از دوستان اگه کسی میدونه راهنمایی کنه.

tdkhakpur
پنج شنبه 17 دی 1388, 23:00 عصر
این هم تازه مدله.
هر فایل تصویری دارای هدر هست همینطوری که نمیشه فایل را به پیکسل های تصویر تشبیه کرد نمونه زیر میتواند کمکتان کند.


#include <stdio.h>
#include <graphics.h>
#include <dos.h>
#include <stdlib.h>
void showBmp(int x,int y,char *fname){
int PalTable[16] =
{0,1,2,3,4,5,20,7,56,57,58,59,60,61,62,63};
FILE *fp;
unsigned char i,j,m,n,o , a[220];
unsigned int t1,t2,xlen,ylen;
char Pal[16][3];
if( (fp= fopen(fname,"rb"))== NULL)
exit(0);
rewind(fp);
fseek(fp,18L,SEEK_SET);
j=fgetc(fp);
i=fgetc(fp);
xlen=(j)+(i) *256;
fseek(fp,22L,SEEK_SET);
j=fgetc(fp);
i=fgetc(fp);;
ylen=(int)(j+i*256);

if ((xlen % 8 )!= 0) xlen=xlen+8-xlen % 8 ;
fseek(fp,54L,SEEK_SET);
for (t1=0 ; t1<16;t1++)
{
m=fgetc(fp);
n=fgetc(fp);
o=fgetc(fp);
i=fgetc(fp);
Pal[t1][0]=m / 4;Pal[t1][1]=n / 4;
Pal[t1][2]=o /4;
}
for (t1=0 ; t1<16;t1++)
setrgbpalette(PalTable[t1], Pal[t1][2],Pal[t1][1],Pal[t1][0]);
fseek(fp,118L,SEEK_SET);
t2=y ;
for(t2=0; t2<ylen; ++t2)
{
fread( a , 1 , 204 , fp );
for (t1=0 ;t1< (xlen / 2);t1++)
{
m=inport(0x60) ;
if(m==1)
{
fclose(fp) ;
return ;
}
putpixel((x+2*t1) ,y, (a[t1] / 16) );
putpixel((x+2*t1)+1,y, (a[t1] % 16) );
}
y--;
}
fclose(fp) ;
}
//================================================== =======================
void main(void)
{
int gdriver = VGA, gmode = VGAHI, errorcode,ret,repeat,lens,nextx,nexty ,i;
struct palettetype pal;
initgraph(&gdriver, &gmode, "g:\\borlandc\\bgi") ;
showBmp(1,1,"1.bmp") ;
scanf("%c");
closegraph() ;
}