A programom egy bmp bittérképét kéne kiírja, de nem teszi azt. Mivel lehet a probléma?
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream ifs;
ofstream ofs;
unsigned long width, height, tmorites, paletteColors;
unsigned short colordepth;
ofs.open("szinkep.txt");
ifs.open("rajz.bmp");
ifs.ignore(18);
ifs.read((char*)&width, 4);
ifs.read((char*)&height, 4);
ifs.ignore(2);
ifs.read((char*)&colordepth, 2);
ifs.read((char*)&tmorites, 4);
ifs.ignore(12);
ifs.read((char*)&paletteColors, 4);
ifs.ignore(4);
unsigned char a;
int i = 0;
int j = 1;
int s = 0;
int k=0;
s = (width * 3) % 4;
char** szinkep = new char*[3*width];
for (i=0;i<3*width;i++)
{
szinkep[i]=new char [height];
}
i=0;
j=1;
if(paletteColors == 0)
{
while(i!=height)
{
ifs>>a;
if (i!=0)
ifs.ignore(s);
while(j%(3*width)!=0)
{
k++;
szinkep[i][j]=(int)a;
if (k==3)
{
ofs <<(unsigned int) szinkep[i][j]<<" ";
k=0;
}
else
ofs <<(unsigned int) szinkep[i][j]<<" ";
j++;
}
j=1;
ofs<<"\n";
i++;
}
}
ifs.close();
cout<<endl<<"I: "<<i<<endl<<"J: "<<j<<endl;
system("pause");
return 0;
}
A felső linkből olvastam ki, hogy a bmp hogyan tárolja el az adatokat. Eszerint írtam egy c++ programocskát ami nem tudom miért nem működik úgy ahogy kéne.
//binárisban nyisd meg a bmp-t
ifs.open("rajz.bmp",std::ios::binary);
//én így csinálnám a pixel beolvasást:
int s = (width * 3) % 4;
char ***pixels = new char**[height];
for(int y=height-1; y>=0; y--)
{
pixels[y] = new char*[width];
for(int x=0; x<width; x++)
{
pixels[y][x]=new char[3];
ifs.read(pixels[y][x],3);
ofs<<pixels[y][x][0]<<" "; //red
ofs<<pixels[y][x][1]<<" "; //green
ofs<<pixels[y][x][2]<<" "; //blue
}
ifs.ignore(s); //a kiegészítő bájtokat átugorjuk a sor végén
ofs<<"\n";
}
Én is binary-val akartam elöbbször viszont valamiért állandóan belekötött a program és hibát jelzett. Ezért használom a chart. Amúgy ez is egy byte-ot olvas ki egyszerre.
A másik gond a wiki szerint, hogy a sorok ki vannak egészítve nullásokkal úgy, hogy négynek a többszöröse legyen a sor mérete.
Köszi a válaszod...a második javaslatod megfontolandó...sőt azt hiszem, hogy úgy is fogom csinálni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!