<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[bitmapfile auslesen]]></title><description><![CDATA[<p>Hallo Leute,<br />
Stehe gerade vor der Aufgabe ein BMP (24bit) file binär auszulesen um es in meinem c++ programm zu modifizieren:<br />
folgender code ist vorhanden:</p>
<pre><code class="language-cpp">typedef struct {
	  short   bfType;
	  long   bfSize;
	  short   bfReserved1;
	  short    bfReserved2;
	  long   bfOffBits;
	} BITMAPFILEHEADER;
</code></pre>
<pre><code class="language-cpp">//hier versuche ich den HEADER der bmp datei auszulesen und die Werte in das struct BITMAPFILEHEADER zu speichern.

	FILE *in;
	//open the file for reading in binary mode
	in = fopen(&quot;test.bmp&quot;, &quot;rb&quot;);

	BITMAPFILEHEADER bmfh;

	fread(&amp;bmfh,sizeof(BITMAPFILEHEADER),1,in);
</code></pre>
<p>der Code läuft soweit. jedoch wenn ich mir nach dem Laden den inhalt von<br />
bmfh.bfSize (wo eigentlich de Filegröße drinstehen sollte) bekomm ich nur 0.<br />
kanns mir nicht ganz erklären.<br />
Hat jemand eine idee? oder eine bessere möglichkeit wie man am besten bmp's ausliest?</p>
<p>lg<br />
cryps</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/237220/bitmapfile-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 01:03:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/237220.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Mar 2009 20:43:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to bitmapfile auslesen on Wed, 25 Mar 2009 20:43:50 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
Stehe gerade vor der Aufgabe ein BMP (24bit) file binär auszulesen um es in meinem c++ programm zu modifizieren:<br />
folgender code ist vorhanden:</p>
<pre><code class="language-cpp">typedef struct {
	  short   bfType;
	  long   bfSize;
	  short   bfReserved1;
	  short    bfReserved2;
	  long   bfOffBits;
	} BITMAPFILEHEADER;
</code></pre>
<pre><code class="language-cpp">//hier versuche ich den HEADER der bmp datei auszulesen und die Werte in das struct BITMAPFILEHEADER zu speichern.

	FILE *in;
	//open the file for reading in binary mode
	in = fopen(&quot;test.bmp&quot;, &quot;rb&quot;);

	BITMAPFILEHEADER bmfh;

	fread(&amp;bmfh,sizeof(BITMAPFILEHEADER),1,in);
</code></pre>
<p>der Code läuft soweit. jedoch wenn ich mir nach dem Laden den inhalt von<br />
bmfh.bfSize (wo eigentlich de Filegröße drinstehen sollte) bekomm ich nur 0.<br />
kanns mir nicht ganz erklären.<br />
Hat jemand eine idee? oder eine bessere möglichkeit wie man am besten bmp's ausliest?</p>
<p>lg<br />
cryps</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686053</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Wed, 25 Mar 2009 20:43:50 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Wed, 25 Mar 2009 21:34:36 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>bmp verwendet LittleEndian, d.h. in einem (theoretischem) Bitmap-File der Größe 1, würdest du die &quot;1&quot; im dritten Byte der Datei finden. short und long erwarten aber BigEndian.<br />
Außerdem solltest du überprüfen, wie groß dein long ist, du brauchst einen 32Bit-Integer(=4Byte).<br />
Im an den Bitmapfileheader folgenden Bitmapinfo benötigst du dann auch noch einen im Zweierkomplement kodierten 32Bit-Integer.<br />
Sowohl die Umwandlung LittleEndian-&gt;BigEndian, als auch das Zweierkomplement müsstest du per modulos oder bitweisen-Operatoren machen, weswegen ich dir empfehle das Bitmap byteweise einzulesen</p>
<pre><code>char bmfh[14];
fread(bmfh,sizeof(char),1,in);
</code></pre>
<p>und dir dann aus den Bytes die Informationen Dateigröße und Offset selber zusammenbasteln:</p>
<pre><code>bfSize = bmfh[2] + 16*bmfh[3] + 256*bmfh[4] + 4096*bmfh[5];
bfOffBits = bmfh[10] + 16*bmfh[11] + 256*bmfh[12] + 4096*bmfh[13];
</code></pre>
<p>Viele Grüße, Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686069</guid><dc:creator><![CDATA[Gast_Chris]]></dc:creator><pubDate>Wed, 25 Mar 2009 21:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Wed, 25 Mar 2009 22:31:10 GMT]]></title><description><![CDATA[<p>Gast_Chris schrieb:</p>
<blockquote>
<p>Hi,</p>
<pre><code>char bmfh[14];
fread(bmfh,sizeof(char),1,in);
</code></pre>
</blockquote>
<p>kannst du mir kurz erklären wieso dein char array 14 groß ist?<br />
mein struct ist 16 bytes groß (sizeof() liefert mir zumindest 16). kann es daran liegen dass es bei mir nicht hinhaut?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686094</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Wed, 25 Mar 2009 22:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Wed, 25 Mar 2009 22:55:36 GMT]]></title><description><![CDATA[<p>s.Wikipedia</p>
<p>bfType = 2Byte<br />
bfSize = 4Byte<br />
bfReserved = 4Byte<br />
bfOffBits = 4Byte</p>
<p>=14Byte</p>
<p>Teste mal deine short und long wie groß die sind ( sizeof(short) und sizeof(long) ).<br />
Ich vermute long sind bei dir 5Byte (=32Bit-Integer) statt 4, d.h. du liest noch Daten aus dem folgenden Feld.</p>
<p>Viele Grüße, Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686097</guid><dc:creator><![CDATA[Gast_Chris]]></dc:creator><pubDate>Wed, 25 Mar 2009 22:55:36 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Wed, 25 Mar 2009 23:09:28 GMT]]></title><description><![CDATA[<p>Habe bei meiner ersten Antwort einen Fehler entdeckt:</p>
<pre><code>bfSize = bmfh[2] + 256*bmfh[3] + 0x10000*bmfh[4] + 0x1000000*bmfh[5];
bfOffBits = bmfh[10] + 256*bmfh[11] + 0x10000*bmfh[12] + 0x1000000*bmfh[13];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1686099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686099</guid><dc:creator><![CDATA[Gast_Chris]]></dc:creator><pubDate>Wed, 25 Mar 2009 23:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Wed, 25 Mar 2009 23:15:54 GMT]]></title><description><![CDATA[<p>Gast_Chris schrieb:</p>
<blockquote>
<p>s.Wikipedia</p>
<p>bfType = 2Byte<br />
bfSize = 4Byte<br />
bfReserved = 4Byte<br />
bfOffBits = 4Byte</p>
<p>=14Byte</p>
<p>Teste mal deine short und long wie groß die sind ( sizeof(short) und sizeof(long) ).<br />
Ich vermute long sind bei dir 5Byte (=32Bit-Integer) statt 4, d.h. du liest noch Daten aus dem folgenden Feld.</p>
<p>Viele Grüße, Chris</p>
</blockquote>
<p>short haben 2 bytes, und long 4 bytes...normalerweise müsste mein struct auch 14 bytes haben.. es sind aber tatsächlich 16 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686101</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Wed, 25 Mar 2009 23:15:54 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Wed, 25 Mar 2009 23:34:01 GMT]]></title><description><![CDATA[<p>Sind structs eventuell immer Vielfache von int? k.A.<br />
Auf jeden Fall liest du die richtige Größe ein, du musst dir jetzt nur noch Gedanken machen, wie du die eingelesenen Werte richtig interpretierst -&gt; s.o.</p>
<p>BTW: bfSize ist ein &quot;unzuverlässiger&quot; Wert. Das Erstellerprogramm des Bitmaps kann da alles mögliche reinschreiben, ohne dass dies etwas mit der wahren Größe der Datei zu tun hat (und auch ohne dass es jemanden interessiert, für die Auslese der Bilddaten ist lediglich die Breite, Höhe und Codierung wichtig). Schau dir das Bitmap mal mit einem Hexeditor an, vielleicht steht da als bfSize wirklich Null drin.</p>
<p>PS:</p>
<p>ich selbst schrieb:</p>
<blockquote>
<p>5Byte(=32Bit-Integer)</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Dringend Zeit für mich ins Bett zu gehen - 32Bit-Integer=(4*8Bit)-Integer=4Byte !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686103</guid><dc:creator><![CDATA[Gast_Chris]]></dc:creator><pubDate>Wed, 25 Mar 2009 23:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Wed, 25 Mar 2009 23:43:56 GMT]]></title><description><![CDATA[<p>Gast_Chris schrieb:</p>
<blockquote>
<pre><code>bfSize = bmfh[2] + 256*bmfh[3] + 0x10000*bmfh[4] + 0x1000000*bmfh[5];
bfOffBits = bmfh[10] + 256*bmfh[11] + 0x10000*bmfh[12] + 0x1000000*bmfh[13];
</code></pre>
</blockquote>
<p>ich werde es wohl so machen wie du es vorgeschlagen hast.... habs paste&amp;copy gemacht und auf die weiße hat bfSize sehrwohl (irgendeinen) wert...</p>
<p>jetzt muss ich nur noch verstehen was der obige code macht.<br />
könnte mir da noch jemand unter die arme greifen?<br />
also für bfSize fang ich im array bei position 2 an weil dort die informationen auch im header stehn. (von 2 - 6) ... dazu addiere ich nun 256*bmfh[3] usw. ?<br />
wieso macht man das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686105</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Wed, 25 Mar 2009 23:43:56 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Thu, 26 Mar 2009 00:52:08 GMT]]></title><description><![CDATA[<p>Dein Wert bfSize steht in den 4 genannten Bytes. Ein Byte sind 8 Bit, also stellt ein Byte eine Zahl zwischen 0 und 255 da (2^8=256). bfSize ist also quasi im im 256-System codiert.</p>
<p>In unserem normalem Zahlensystem hat in der Zahl 456 die Ziffer &quot;4&quot; die Wertigkeit Hundert, die Ziffer &quot;5&quot; die Wertigkeit Zehn und die Ziffer &quot;6&quot; die Wertigkeit Eins. Somit ergibt sich aus 4*100 + 5*10 + 6*1 = 456.</p>
<p>Im 256-System hat in einer vierstelligen Zahl<br />
die erste Ziffer (=das erste Byte) die Wertigkeit 16777216,<br />
die zweite Ziffer die Wertigkeit 65536,<br />
die dritte Ziffer die Wertigkeit 256<br />
und die vierte Ziffer die Wertigkeit 1.</p>
<p>In meinem vorherigen Post war ich zu faul die Wertigkeiten der ersten beiden Ziffern (=Byte) auszurechnen und habe direkt die Hexadezimalschreibweise benutzt: 0x1=1, 0x10=16, 0x100=256, 0x10000=65536, ...</p>
<pre><code>bfSize = bmfh[2] + 256*bmfh[3] + 65536*bmfh[4] + 16777216*bmfh[5];
bfOffBits = bmfh[10] + 256*bmfh[11] + 65536*bmfh[12] + 16777216*bmfh[13];
</code></pre>
<p>So wäre es vielleicht einfacher einzusehen gewesen. Was hier gemacht wird ist das gleiche, wie im obigen Beispiel: 456 = 4*100 + 5*10 + 6*1<br />
Wegen dem LittleEndian/BigEndian-Problem (s.Wikipedia) musst du aber drauf achten, welches Byte welche Wertigkeit hat.</p>
<p>Viele Grüße, Chris (jetzt endgülitg im Bett <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686116</guid><dc:creator><![CDATA[Gast_Chris]]></dc:creator><pubDate>Thu, 26 Mar 2009 00:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Thu, 26 Mar 2009 21:25:09 GMT]]></title><description><![CDATA[<p>ich versteh das nicht.</p>
<pre><code class="language-cpp">int bfSize =    header[2] +  256*header[3] +  0x10000*header[4] +  0x1000000*header[5];
	int bfOffBits = header[10] + 256*header[11] + 0x10000*header[12] + 0x1000000*header[13];
	int bfwidth =   header[18] + 256*header[19] + 0x10000*header[20] + 0x1000000*header[21];
	int bfheight = header[22] + 256*header[23] + 0x10000*header[24] + 0x1000000*header[25];
</code></pre>
<p>nur bei bfwidth kommt irgendein negativer wert heraus.. bin mir aber sicher dass die breite von 18-22 im header positioniert ist..... alle anderen scheinen zu stimmen .....hab keine ahnung woran das liegt....:(</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686669</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Thu, 26 Mar 2009 21:25:09 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Thu, 26 Mar 2009 22:05:10 GMT]]></title><description><![CDATA[<p>Möglicherweise Overflow?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686685</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 26 Mar 2009 22:05:10 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Thu, 26 Mar 2009 22:30:10 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Möglicherweise Overflow?</p>
</blockquote>
<p>die betreffenden bytes im header sind:</p>
<p>height: 6D 00 00 00 wird richtig berrechnet<br />
width: 89 00 00 00 --&gt; kommt -137 oda so raus... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>so nebenbei:<br />
warum dieses Beispiel bei mir nicht funktioniert weiß ich nicht: --&gt; <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-16949-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-16949-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html</a><br />
wahrscheinlich liegts daran dass ich mir die den inhalt der structs falsch zusammenbaue (unter linux kann ich die window.h leider nicht verwenden)...<br />
hab mir angeschaut wie in windows.h die structs aufgebaut sind ...da mach ich aus jedem WORD ein short und statt DWORD nehm ich long ... aber da liest er mir letztendlich einfach nicht das richtige ein....</p>
<p>jetzt bin ich schon ne weile an der geschichte dran... und es will einfach nicht... einfach bitmap 24bit RGB einlesen...grml</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686693</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Thu, 26 Mar 2009 22:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Fri, 27 Mar 2009 07:29:10 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Das Problem liegt am int<br />
int = 32 Bit = 4 Byte<br />
Also passen die 4 Byte rein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>ABER int kann positive und Negative Zahlen somit verlierst du 1 Bit (an das Vorzeichen)</p>
<p>unsigned int und das Problem sollte sich erledigt haben.<br />
Steht übrignds auch im Bitmap Wicki so drinnen</p>
<blockquote>
<p>All values are stored as unsigned integers, unless explicitly noted.</p>
</blockquote>
<p>Was zwar nicht stimmen muss, aber logisch wäre.</p>
<p>Zu der Umrechnung könntest du auch</p>
<pre><code class="language-cpp">unsigned int bfSize = header[2] + (header[3] &lt;&lt; 8) + (header[4] &lt;&lt; 16) + (header[5] &lt;&lt; 24);
</code></pre>
<p>verwenden. Macht genau das selbe könnte eventuell auch etwas schneller sein (wobei ich das bezweifle ^^). Also reine Geschmackssache was du verwendest.</p>
<p>Keros</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686753</guid><dc:creator><![CDATA[Keros]]></dc:creator><pubDate>Fri, 27 Mar 2009 07:29:10 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Fri, 27 Mar 2009 10:53:03 GMT]]></title><description><![CDATA[<p>hallo,<br />
danke für die antwort werd ich berücksichtien.<br />
ich bin mittlerweile auf noch eine möglickeit gestoßen:</p>
<pre><code class="language-cpp">fread(header, 54, 1, f);
 width = *(int*) (header + 18);
....
...
</code></pre>
<p>was wird denn hier gemacht? header is ein char array der länge 54 ...<br />
dazu zähle ich 18 und caste es auf int mit irgendwelchen zeigern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686841</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Fri, 27 Mar 2009 10:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Fri, 27 Mar 2009 11:28:16 GMT]]></title><description><![CDATA[<p>Ist einfach nur Zeigerarithmetik.<br />
Die elemente eines Arrays werden hintereinander in den Speicher gelegt. Wenn man also zum Zeiger eine Zahl hinzu addiert geht man die einzelnen Elemente des Arrays durch.</p>
<pre><code class="language-cpp">unsigned char array[10];
int zahl = 0;

// beide Zeilen machen das selbe
array[5] = 10;
*(array + 5) = 10;

// alle 3 zeilen machen das selbe
zahl = (int) array[5];
zahl = (int) *(array + 5); // zuerst zu stelle 5 gehen dann auf wert zugreifen (*) und dann auf int casten
zahl = *(int*) (array + 5); // zuerst zu stelle 5 gehen dann auf int zeiger casten und dann auf wert zugreifen (*)
</code></pre>
<p>Hat unsigned int dein vorheriges Problem gelöst?</p>
<p>Keros</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686859</guid><dc:creator><![CDATA[Keros]]></dc:creator><pubDate>Fri, 27 Mar 2009 11:28:16 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Fri, 27 Mar 2009 12:07:56 GMT]]></title><description><![CDATA[<p>Keros schrieb:</p>
<blockquote>
<p>Hat unsigned int dein vorheriges Problem gelöst?<br />
Keros</p>
</blockquote>
<p>Jap <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> herzlichen dank, es lag daran.<br />
werde aber trotzdem die Version mit der Zeigerarithmetik verwenden.<br />
sagt mir mehr zu als die rechen-wurst.</p>
<p>das einlesen funktioniert soweit. heut werd ich mich noch ans modifizieren des bitmaps machen.<br />
ich müsste nur 24bit rgb unterstützen. d.h. im bitmap sind die hexazahlen immer im shema r g b r g b r g b usw..... abgespeichert und ein pixel entspricht einem trippel r g b.<br />
das heißt um einem bestimmten Pixel eine andere Farbe zu geben muss ich den bestimmten drei positionen in meinem array (wo ich die bilinformationen abgespeichert habe) welche das pixel in r g b repräsentieren , jeweils einen wert zwischen 0...255 zuordnen....?<br />
dann wär ein einzelnes pixel umgefärbt...</p>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686881</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Fri, 27 Mar 2009 12:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to bitmapfile auslesen on Sat, 11 Apr 2009 09:20:46 GMT]]></title><description><![CDATA[<p>hallo,<br />
hab das ganze jetzt ein bisschen auf &quot;more c++ style&quot; umgemodelt. Allerdings stoße ich wieder auf probleme....<br />
so lese ich mein file ein:</p>
<pre><code class="language-cpp">ifstream file(&quot;test.bmp&quot;, std::ios::binary | std::ios::in);

	m_header = new char[54];
	file.read(m_header, 54);

	m_width = (unsigned char) m_header[18] ;   
	m_height = (unsigned char) m_header[22] ;

	m_size = m_width * m_height * 3;

	vector&lt;char&gt; imgData(m_size);  

	file.read(&amp;imgData[0], m_size);
	m_size = imgData.size();

	cout &lt;&lt; &quot;BMP LOADET\n&quot;;
</code></pre>
<p>ad zeilen 6 und 7:<br />
das auslesen der höehe und breite funktioniert. allerdings nur richtig bei kleinen dateien.. liegt das daran dass mein code nur position 18 betrachtet? könnte ich hier nicht einfach m_header[18] + m_header[19]...bis [21] machen damit alle vier Bytes betrachtet werden?</p>
<p>des weiteren berechne ich glaub ich die größe (m_size) falsch.... breite * höhe * 3 ... (weil je drei bytes für ein pixel) ... bei manchen bmp files ist die größe aber größer... und somit fehlen ein paar zeilen im hexaeditor wenn ich mein file wieder rausschreibe.... ?? was fehlt mir noch? wär nett wenn sich das noch jemand anschaun könnt....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694290</guid><dc:creator><![CDATA[cryps]]></dc:creator><pubDate>Sat, 11 Apr 2009 09:20:46 GMT</pubDate></item></channel></rss>