Vytvorenie bitmap suboru... – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vytvorenie bitmap suboru...  – C / C++ – Fórum – Programujte.comVytvorenie bitmap suboru... – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Nrigo
~ Anonymní uživatel
46 příspěvků
15. 11. 2009   #1
-
0
-

Urobil som si nasledovnu funkciu:

void hlavne::create(char* filename)

{
FILE*fp=NULL;
fp = fopen(filename,"wb");
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER {
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;

bfh.bfType='MB';
bfh.bfSize=sizeof(BITMAPINFOHEADER);
bfh.bfReserved1=0;
bfh.bfReserved2=0;
bfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);

bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biWidth=sirka;
bih.biHeight=vyska;
bih.biPlanes=1;
bih.biBitCount=32;
bih.biCompression=BI_RGB;
bih.biSizeImage=bih.biWidth*bih.biHeight*4;
bih.biXPelsPerMeter=2400;
bih.biYPelsPerMeter=2400;


fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fp);
fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fp);
fwrite(data,bih.biSizeImage,1,fp);
if(fp)fclose(fp);
}


bitmap by mal byt 32 bitovy .. v premennej mam data mam ulozene pixely vo formate unsigned char .. v premennych sirka a vyska mam ulozenu sirku a vysku v pixeloch... ked to spustim tak sa mi subor vytvori, ale neda sa otvorit.. proste tam je asi zly format.. neviem si s tym rady.. skusil som aj vytvorit skusobne pole do ktoreho som okopiroval pixely z ineho bitmapu.. do suboru ich sice zapisalo, ale vysledok bol ten isty ;/ .. nema niekto s tym vecsie skusennosti? predpokladam ze chyba bude v hlavickovych suboroch.. prevdepodobne som niekde nieco zle ulozil, ale neviem prijst na to ze co..

Nahlásit jako SPAM
IP: 88.212.40.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
16. 11. 2009   #2
-
0
-

Samozřejmě tam může být ještě mnoho chyb, ale jednu bych viděl:

bfh.bfSize=sizeof(BITMAPINFOHEADER);

podle dokumentace má být

bfSize - Specifies the size, in bytes, of the bitmap file.

Neboli celková velikost BMP souboru, nejenom velikost struktury.

Nahlásit jako SPAM
IP: 85.207.166.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 163 hostů

Podobná vlákna

Vytvorenie suboru — založil olgo

Vytvorenie noveho suboru — založil Anonymní uživatel

Vytvorenie exe suboru — založil keisen

Binarne vytvorenie BMP suboru — založil frostwyrm333

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý