<?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[AVI aus BMPs erstellen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich erstelle aus einem anwendungs-spezifischen Format 8 Bit Graustufen Bitmaps. Diese können auch von allen möglichen Viewern angzeigt werden, selbst Paint Brush kann sie lesen. So weit so gut.<br />
Nun möchte ich diese Bitmaps in ein AVI stecken. Wenn ich dafür die Bilder mit LoadImage lade:</p>
<pre><code class="language-cpp">HBITMAP hbm=(HBITMAP)LoadImage(NULL,&quot;c:\\temp.bmp&quot;,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
</code></pre>
<p>dann bekomme ich einen Null-Pointer zurück, also geht ja irgendwas beim Laden schief.<br />
Probiere ich es mit Bildern die von PBrush selbst erzeugt wurden, dann funktioniert es wunderbar und ich kann das Video anschauen.</p>
<p>Hier mal der Code, der mir die Bilder erzeugt:</p>
<pre><code class="language-cpp">unsigned long written = 0;

	char* bmpfad = &quot;c:\\temp.bmp&quot;;

//  Graustufenpalette definieren
	LPBYTE pPalette = new BYTE[1024];

	for (int i=0; i&lt;256; i++) 
	{
		pPalette[4*i] = i;          // R 
		pPalette[4*i+1] = i;        // G 
		pPalette[4*i+2] = i;        // B 
		pPalette[4*i+3] = 0;        // alpha
	}

//  Infoheader definieren
	BITMAPINFOHEADER infoheader;
	ZeroMemory(&amp;infoheader, sizeof(BITMAPINFOHEADER));
	infoheader.biSize   = sizeof(BITMAPINFOHEADER);
	infoheader.biWidth  = 640;
	infoheader.biHeight = 480;
	infoheader.biPlanes = 1;
	infoheader.biBitCount = 8;
	infoheader.biClrUsed = 0;
	infoheader.biCompression = BI_RGB;
	infoheader.biSizeImage = 0;
	infoheader.biXPelsPerMeter = 2834; //72 dpi
	infoheader.biYPelsPerMeter = 2834; //72 dpi
	infoheader.biClrImportant = 0;

//  Fileheader definieren
	BITMAPFILEHEADER fileheader;
	fileheader.bfType = 19778;
	fileheader.bfSize   = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 307200 + 256 * sizeof(pPalette);
	fileheader.bfReserved1 = fileheader.bfReserved2 = 0;
	fileheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 256 * sizeof(pPalette);

	HANDLE hfile = CreateFile(bmpfad, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, 0);

    WriteFile(hfile, &amp;fileheader, sizeof(BITMAPFILEHEADER), &amp;written, NULL);
    WriteFile(hfile, &amp;infoheader, sizeof(BITMAPINFOHEADER), &amp;written, NULL);
    WriteFile(hfile, pPalette, 1024, &amp;written, NULL);
    WriteFile(hfile, &amp;cur_pic.image, sizeof(cur_pic.image), &amp;written, NULL);
//  cur_pic.image ist das array mit den eigentlichen Bilddaten
    //printf(&quot;Bytes geschrieben:%u\n&quot;,&amp;written);

    CloseHandle(hfile);
</code></pre>
<p>Ich habe momentan keine Idee, weshalb er sich meiner selbst erezugten AVIs verweigert. Jemand von euch?</p>
<p>Ich bin leider noch nicht durch diese device context durchgestiegen. Wie könnte ich mir denn aus dem array cur_pic.image mittels CreateDIBSection ein HBitmap konstruieren das auch in 8 Bit Graustufen codiert ist? Geht das irgendwie?<br />
Dann könnte ich die Daten 'on the fly' in den AVI-Generator stecken. Wäre vermutlich schneller.</p>
<p>Besten Dank soweit!</p>
<p>Grüße,<br />
Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156914/avi-aus-bmps-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 01:24:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156914.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Aug 2006 12:44:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to AVI aus BMPs erstellen on Mon, 21 Aug 2006 12:44:41 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich erstelle aus einem anwendungs-spezifischen Format 8 Bit Graustufen Bitmaps. Diese können auch von allen möglichen Viewern angzeigt werden, selbst Paint Brush kann sie lesen. So weit so gut.<br />
Nun möchte ich diese Bitmaps in ein AVI stecken. Wenn ich dafür die Bilder mit LoadImage lade:</p>
<pre><code class="language-cpp">HBITMAP hbm=(HBITMAP)LoadImage(NULL,&quot;c:\\temp.bmp&quot;,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
</code></pre>
<p>dann bekomme ich einen Null-Pointer zurück, also geht ja irgendwas beim Laden schief.<br />
Probiere ich es mit Bildern die von PBrush selbst erzeugt wurden, dann funktioniert es wunderbar und ich kann das Video anschauen.</p>
<p>Hier mal der Code, der mir die Bilder erzeugt:</p>
<pre><code class="language-cpp">unsigned long written = 0;

	char* bmpfad = &quot;c:\\temp.bmp&quot;;

//  Graustufenpalette definieren
	LPBYTE pPalette = new BYTE[1024];

	for (int i=0; i&lt;256; i++) 
	{
		pPalette[4*i] = i;          // R 
		pPalette[4*i+1] = i;        // G 
		pPalette[4*i+2] = i;        // B 
		pPalette[4*i+3] = 0;        // alpha
	}

//  Infoheader definieren
	BITMAPINFOHEADER infoheader;
	ZeroMemory(&amp;infoheader, sizeof(BITMAPINFOHEADER));
	infoheader.biSize   = sizeof(BITMAPINFOHEADER);
	infoheader.biWidth  = 640;
	infoheader.biHeight = 480;
	infoheader.biPlanes = 1;
	infoheader.biBitCount = 8;
	infoheader.biClrUsed = 0;
	infoheader.biCompression = BI_RGB;
	infoheader.biSizeImage = 0;
	infoheader.biXPelsPerMeter = 2834; //72 dpi
	infoheader.biYPelsPerMeter = 2834; //72 dpi
	infoheader.biClrImportant = 0;

//  Fileheader definieren
	BITMAPFILEHEADER fileheader;
	fileheader.bfType = 19778;
	fileheader.bfSize   = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 307200 + 256 * sizeof(pPalette);
	fileheader.bfReserved1 = fileheader.bfReserved2 = 0;
	fileheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 256 * sizeof(pPalette);

	HANDLE hfile = CreateFile(bmpfad, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, 0);

    WriteFile(hfile, &amp;fileheader, sizeof(BITMAPFILEHEADER), &amp;written, NULL);
    WriteFile(hfile, &amp;infoheader, sizeof(BITMAPINFOHEADER), &amp;written, NULL);
    WriteFile(hfile, pPalette, 1024, &amp;written, NULL);
    WriteFile(hfile, &amp;cur_pic.image, sizeof(cur_pic.image), &amp;written, NULL);
//  cur_pic.image ist das array mit den eigentlichen Bilddaten
    //printf(&quot;Bytes geschrieben:%u\n&quot;,&amp;written);

    CloseHandle(hfile);
</code></pre>
<p>Ich habe momentan keine Idee, weshalb er sich meiner selbst erezugten AVIs verweigert. Jemand von euch?</p>
<p>Ich bin leider noch nicht durch diese device context durchgestiegen. Wie könnte ich mir denn aus dem array cur_pic.image mittels CreateDIBSection ein HBitmap konstruieren das auch in 8 Bit Graustufen codiert ist? Geht das irgendwie?<br />
Dann könnte ich die Daten 'on the fly' in den AVI-Generator stecken. Wäre vermutlich schneller.</p>
<p>Besten Dank soweit!</p>
<p>Grüße,<br />
Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121505</guid><dc:creator><![CDATA[MGH]]></dc:creator><pubDate>Mon, 21 Aug 2006 12:44:41 GMT</pubDate></item><item><title><![CDATA[Reply to AVI aus BMPs erstellen on Mon, 21 Aug 2006 13:16:34 GMT]]></title><description><![CDATA[<p>Vllt hilft dir das <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>1. <a href="http://www.adp-gmbh.ch/win/programming/avi_examples/avi_from_file.html" rel="nofollow">http://www.adp-gmbh.ch/win/programming/avi_examples/avi_from_file.html</a><br />
2. <a href="http://www.adp-gmbh.ch/win/programming/avi/avi.html" rel="nofollow">http://www.adp-gmbh.ch/win/programming/avi/avi.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121543</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Mon, 21 Aug 2006 13:16:34 GMT</pubDate></item><item><title><![CDATA[Reply to AVI aus BMPs erstellen on Mon, 21 Aug 2006 13:29:27 GMT]]></title><description><![CDATA[<p>Danke für den Link.<br />
Ich habe noch die Originalversion von Lucian Wischik.<br />
Mit der tut es nicht, werde es mal mit der überarbeiteten versuchen.</p>
<p>Allerdings habe ich mittlerweile eher den Verdacht, dass es an dem Header liegt. Wenn ich ein selbst erstelltes BMP unter PBrush erneut speichere, kann er es einlesen. Allerdings stimmt dann die Farbpalette nicht mehr.</p>
<p>MfG,<br />
Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121560</guid><dc:creator><![CDATA[MGH]]></dc:creator><pubDate>Mon, 21 Aug 2006 13:29:27 GMT</pubDate></item></channel></rss>