<?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[TGA-Loader]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich versuche momentan Bitmaps oder TGAs mittels C++ einzulesen, um aus den Datein die Grauwerte für jeden Pixel bestimmen zu können.</p>
<p>Nun habe ich den netten TGA Loader auf dieser Seite gefunden:<br />
<a href="http://gpwiki.org/index.php/LoadTGACpp" rel="nofollow">http://gpwiki.org/index.php/LoadTGACpp</a></p>
<p>Ich möchte eine Datei test.tga einlesen.</p>
<p>wenn ich mir nun einen</p>
<pre><code class="language-cpp">char* filename = &quot;test.tga&quot;
</code></pre>
<p>definiere folgenden Code verwende:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cmath&gt;
#include &lt;fstream&gt;
#include &lt;iomanip&gt;
#include &lt;cstring&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;
#include &quot;BMP_Read.h&quot;
#include &quot;TGA_load.h&quot;
#include &quot;memory.h&quot;
using namespace std;

int main(int argc, char *argv[])
{
		//Für das Laden von TGAs
		TGAImg Ausgangsbild;
		char * filename = &quot;\test.tga&quot;;
		Ausgangsbild.Load(filename);
		cout &lt;&lt; Ausgangsbild.Load(filename)&lt;&lt; endl;
		int w = Ausgangsbild.GetWidth();
		cout &lt;&lt; w &lt;&lt; endl;

}
</code></pre>
<p>Dann erhalte ich leider immer die Fehlermeldung, dass das Bild nicht existieren würde.<br />
Weiß jemand was genau ich der Klasse übergeben müsste um eine solche Datei ordentlich zu laden? Die Adresse der test.tga lautet:<br />
F:\Sascha\Eigene Dateien\Studium\Inline_holographie\test.tga</p>
<p>Ich wäre euch für Hilfe sehr sehr dankbar!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247370/tga-loader</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 08:02:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247370.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Aug 2009 08:41:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TGA-Loader on Mon, 10 Aug 2009 08:41:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich versuche momentan Bitmaps oder TGAs mittels C++ einzulesen, um aus den Datein die Grauwerte für jeden Pixel bestimmen zu können.</p>
<p>Nun habe ich den netten TGA Loader auf dieser Seite gefunden:<br />
<a href="http://gpwiki.org/index.php/LoadTGACpp" rel="nofollow">http://gpwiki.org/index.php/LoadTGACpp</a></p>
<p>Ich möchte eine Datei test.tga einlesen.</p>
<p>wenn ich mir nun einen</p>
<pre><code class="language-cpp">char* filename = &quot;test.tga&quot;
</code></pre>
<p>definiere folgenden Code verwende:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cmath&gt;
#include &lt;fstream&gt;
#include &lt;iomanip&gt;
#include &lt;cstring&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;
#include &quot;BMP_Read.h&quot;
#include &quot;TGA_load.h&quot;
#include &quot;memory.h&quot;
using namespace std;

int main(int argc, char *argv[])
{
		//Für das Laden von TGAs
		TGAImg Ausgangsbild;
		char * filename = &quot;\test.tga&quot;;
		Ausgangsbild.Load(filename);
		cout &lt;&lt; Ausgangsbild.Load(filename)&lt;&lt; endl;
		int w = Ausgangsbild.GetWidth();
		cout &lt;&lt; w &lt;&lt; endl;

}
</code></pre>
<p>Dann erhalte ich leider immer die Fehlermeldung, dass das Bild nicht existieren würde.<br />
Weiß jemand was genau ich der Klasse übergeben müsste um eine solche Datei ordentlich zu laden? Die Adresse der test.tga lautet:<br />
F:\Sascha\Eigene Dateien\Studium\Inline_holographie\test.tga</p>
<p>Ich wäre euch für Hilfe sehr sehr dankbar!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1758126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758126</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Mon, 10 Aug 2009 08:41:29 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Mon, 10 Aug 2009 08:52:11 GMT]]></title><description><![CDATA[<p>Benutz / anstatt \. Wenn du \ benutzt, musst du \\ nutzen, da \t z.B. den Tab-Character beschreibt. \\ beschreibt einen \.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1758131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758131</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Mon, 10 Aug 2009 08:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Mon, 10 Aug 2009 09:26:08 GMT]]></title><description><![CDATA[<p>Das ändert leider nichts an dem Fehler Nr 2 (in der Datei unter <a href="http://gpwiki.org/index.php/LoadTGACpp" rel="nofollow">http://gpwiki.org/index.php/LoadTGACpp</a> beschrieben)</p>
<pre><code class="language-cpp">#define IMG_ERR_NO_FILE     0x2
</code></pre>
<p>. Vielleicht hat jemand den TGA Loader schonmal benutzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1758144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758144</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Mon, 10 Aug 2009 09:26:08 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Mon, 10 Aug 2009 09:28:22 GMT]]></title><description><![CDATA[<p>Entweder du gibst den direkten Pfad an:</p>
<pre><code class="language-cpp">const char* filename = &quot;F:/Sascha/Eigene Dateien/Studium/Inline_holographie/test.tga&quot;;
</code></pre>
<p>Oder du sorgst dafür, dass dein indirekter Pfad stimmt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1758147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758147</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 10 Aug 2009 09:28:22 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 14:15:57 GMT]]></title><description><![CDATA[<p>Hallo, ich habe nun den Loader für meine Zwecke ausreichend neu geschrieben. Ich kann nun 8 bit grayscale einlesen (glaube ich zumindest) Bislang lese ich eine Datei mit fopen ein und speicher diese dann in einem char* buffer (mit fread).</p>
<p>Nun möchte ich gerne aus den einzelnen Elementen des char* einen intwert berechnen. Dazu müsste ich aber wissen, wie diese Elemente überhaupt gespeichert sind. Hat jemand eine Idee wie sich jedes char* Element in eine integer-Zahl umrechnen ließe?</p>
<p>Die Load Funktion sieht so aus:</p>
<pre><code class="language-cpp">char* TGA_Img :: Load(const char *filename)
{
		long lSize;
		int dummy,i;
		size_t results;
		char* buffer;
		FILE *picture_in;
		picture_in = fopen(filename, &quot;rb&quot; ); 
		fseek (picture_in, 0 , SEEK_END);
		lSize = ftell (picture_in);
		rewind (picture_in);
		buffer = (char*) malloc (sizeof(char)*lSize);
		results = fread( buffer,1, 1000, picture_in );
		return buffer;
}
</code></pre>
<p>Der entsprechende Teil in der main so:</p>
<pre><code class="language-cpp">//Für das Laden von TGAs
	TGA_Img Ausgangsbild;
	const char* filename = &quot;F:/Sascha/Eigene Dateien/Studium/Inline_holographie/test.tga&quot;;
	int p=1002;
	char* buffer;
	vector &lt;int&gt; vc_data;
	int i;
	buffer = Ausgangsbild.Load(filename);
</code></pre>
<p>Mein Ziel ist es, die Werte des Headers auslesen zu könen und alle Grauwerte ine iner n kreuz m Matrix zu speichern, wobei jedes Matrixelement einen Pixel darstellen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759528</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Wed, 12 Aug 2009 14:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 14:41:43 GMT]]></title><description><![CDATA[<p>Tembudrus schrieb:</p>
<blockquote>
<p>Hat jemand eine Idee wie sich jedes char* Element in eine integer-Zahl umrechnen ließe?</p>
</blockquote>
<p>Warum nimmst du nicht einen std::vector in den du alles zusammen reinpackst, d.h. den ganzen Dateininhalt? Und std::fstreams für die streams, dann wirds recht einfach, den kompletten Inhalt in einem Rutsch in den vctor zu packen, ohne großartige C-Style buffer-Fummeleien wie du sie hast. An Stelle eines char-vectors kannst du dann eventuell gleich ints aus der Datei rauslesen, je nachdem wie die genau aufgebaut ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759542</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 12 Aug 2009 14:41:43 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 15:17:44 GMT]]></title><description><![CDATA[<p>Ich hatte erst vor fstream zu nutzen, mir war aber nicht klar, wie ich mit fstream eine Datei in Blöcke von 1 byte aufspalten kann und dann jeden Block also jedes Byte in ein Vektorelement schreibe.</p>
<p>Achja: Mir ist das immernoch nicht klar <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759579</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Wed, 12 Aug 2009 15:17:44 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 15:19:19 GMT]]></title><description><![CDATA[<p>Tembudrus schrieb:</p>
<blockquote>
<p>Ich hatte erst vor fstream zu nutzen, mir war aber nicht klar, wie ich mit fstream eine Datei in Blöcke von 1 byte aufspalten kann und dann jeden Block also jedes Byte in ein Vektorelement schreibe.</p>
</blockquote>
<p>Warum solltest du das tun wollen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759580</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 12 Aug 2009 15:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 15:26:16 GMT]]></title><description><![CDATA[<p>weil jedes byte einen grauwert symbolisiert und genau die will ich haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759584</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Wed, 12 Aug 2009 15:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 15:28:01 GMT]]></title><description><![CDATA[<p>Tip: unsigned char hat die Größe 1 byte <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/1759586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759586</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 12 Aug 2009 15:28:01 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 15:32:10 GMT]]></title><description><![CDATA[<p>?! wenn ich meine Datei einlese und mir z.B mit cout das 50te Element des Buffers ausgeben lasse, so erhalte ich nix bzw die Sonderzeichen, denen das Element in ascii gerade entspricht. Das will ich aber nicht. Das Byte stellt ja keinen Text sondern einen Wert da. Wenn ich irgendwie den Wert erfahren kann, den das Byte repräsentiert, so bin ich vollends zufrieden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759590</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Wed, 12 Aug 2009 15:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 15:43:11 GMT]]></title><description><![CDATA[<p>Tembudrus schrieb:</p>
<blockquote>
<p>?! wenn ich meine Datei einlese und mir z.B mit cout das 50te Element des Buffers ausgeben lasse, so erhalte ich nix bzw die Sonderzeichen, denen das Element in ascii gerade entspricht. Das will ich aber nicht. Das Byte stellt ja keinen Text sondern einen Wert da. Wenn ich irgendwie den Wert erfahren kann, den das Byte repräsentiert, so bin ich vollends zufrieden.</p>
</blockquote>
<p>Du lässt dir also binäre Daten als Text anzeigen und bist mit dem Ergebnis nicht zufrieden. Was hast du denn erwartet?</p>
<pre><code class="language-cpp">std::cout &lt;&lt; int(buffer[49]);
</code></pre>
<p>Gefällt dir dieses Ergebnis besser?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759595</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Wed, 12 Aug 2009 15:43:11 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 15:45:15 GMT]]></title><description><![CDATA[<p>Das liegt daran dass du chars im buffer hast und der compiler, wenn du sie an einen Stream übergibst, bei char automatisch annimmt dass es sich um ein Zeichen handelt - also gibt er auch die Zeichendarstellung aus. Wenn du es als Zahlenwert haben möchtest musst du es vorher in einen Zahlenwert casten, z.B. per static_cast&lt;short&gt;.</p>
<p>Intern ist das wurscht, es ist nur die Ausgabe die du nicht richtig gemacht hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759596</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 12 Aug 2009 15:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 16:02:18 GMT]]></title><description><![CDATA[<p>Oh super!!! Vielen Dank!! Es funktioniert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759612</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Wed, 12 Aug 2009 16:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 18:42:23 GMT]]></title><description><![CDATA[<p>So langsam bekomme ich nen Krampf.</p>
<p>Ich definiere mir einen Vektor mit int Einträgen und initialisiere diesen mittels einer void Funktion. Nun will ich zwei Einträge aus dem vektor auslesen und an andere Integerwerte übergeben. Das ganze Sieht so aus:</p>
<pre><code class="language-cpp">vector &lt;int&gt; vi_header[9]; 
		header_build(filename, buffer, vi_header[9]);
		int heigh, width;
		heigh = vi_header[7];
		width = vi_header[6];
</code></pre>
<p>Nun erhalte ich folgende Fehlermeldung:</p>
<blockquote>
<p>tga_gray_load.h(75) : error C2440: '=': 'std::vector&lt;_Ty&gt;' kann nicht in 'int' konvertiert werden<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Ty=int<br />
1&gt; ]<br />
1&gt; Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden</p>
</blockquote>
<p>Was soll mir das denn nun schon wieder sagen? wieso kann ich denn nicht einfache intwerte aus dem Vektor auslesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759693</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Wed, 12 Aug 2009 18:42:23 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Wed, 12 Aug 2009 18:51:54 GMT]]></title><description><![CDATA[<p>Tembudrus schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vector &lt;int&gt; vi_header[9];
</code></pre>
</blockquote>
<p>Das ist ein array aus 9 vectoren. Soll vermutlich so aussehen:</p>
<pre><code class="language-cpp">vector &lt;int&gt; vi_header(9);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1759699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759699</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 12 Aug 2009 18:51:54 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Tue, 18 Aug 2009 16:30:36 GMT]]></title><description><![CDATA[<p>Vielen Dank nochmals für all eure Hilfe, cih stehe kurz vor dem Abschluss des Projektes. Um nun auch die Ergebnisse ansehen zu können, möchte ich meine Daten in Bildern festhalten. dazu muss ich mir bitmaps erstellen. Der Grudsätzlich Aufbau einer Bitmap ist mir klar. Was ich aber nicht schaffe ist es in meiner Datei, möge sie &quot;Test.bmp&quot; heißen, den einzelnen bytes die richtigen Werte zuzuordnen.</p>
<p>Angenommen ich möchte das erste Byte auf den Wert 118 setzen. Weiß jemand wie ich dieses schaffe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762995</guid><dc:creator><![CDATA[Tembudrus]]></dc:creator><pubDate>Tue, 18 Aug 2009 16:30:36 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Tue, 18 Aug 2009 16:40:16 GMT]]></title><description><![CDATA[<p>So:</p>
<pre><code class="language-cpp">std::ofstream stream( &quot;test.bmp&quot;, std::ios::binary | std::ios::out );
stream.put( 118 );
stream.close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1762997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762997</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 18 Aug 2009 16:40:16 GMT</pubDate></item><item><title><![CDATA[Reply to TGA-Loader on Tue, 18 Aug 2009 16:57:11 GMT]]></title><description><![CDATA[<p>vector &lt;unsigned char&gt; data_bytes;<br />
ist der datentyp den du willst, wenn du byteweise auf die daten zugreifen willst.<br />
das mal so am rande.<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763006</guid><dc:creator><![CDATA[m3rk3r]]></dc:creator><pubDate>Tue, 18 Aug 2009 16:57:11 GMT</pubDate></item></channel></rss>