<?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[Richtiger Umgang mit IStream]]></title><description><![CDATA[<p>Hi</p>
<p>Ich benütze folgenden Quelltext um die optimale Qualitätseinstellung für eine jpg-Datei in Abhängigkeit von der gewünschten Dateigröße zu ermitteln:</p>
<pre><code class="language-cpp">IStream *str=NULL;
 CreateStreamOnHGlobal(NULL, TRUE, &amp;str);

 int upper=100;
 int under=0;
 int size=102400;
 int oldqual=0;
 _ULARGE_INTEGER a;
 a.LowPart=0;
 a.HighPart=0;
 _LARGE_INTEGER b;
 b.LowPart=0;
 b.HighPart=0;

for(int i=0; i&lt;7; i++)
{
 quality=(upper+under)/2;

 if(quality==oldqual) break;
 oldqual=quality;
 encoderParameters.Parameter[0].Value = &amp;quality;

  :arrow_right: str-&gt;SetSize(a);
  :arrow_right: str-&gt;Seek(b,STREAM_SEEK_SET,NULL);

 image-&gt;Save(str, &amp;encoderClsid, &amp;encoderParameters);

 STATSTG str_stat;
 str-&gt;Stat(&amp;str_stat, STATFLAG_NONAME);

 if(str_stat.cbSize.LowPart &gt; size)
  upper=quality;
 if(str_stat.cbSize.LowPart &lt; size)
  under=quality;
}
</code></pre>
<p>Funktioniert soweit auch recht gut. Meine Frage bezieht sich auf die zwei markierten Zeilen.<br />
Ist dies der korrekte Weg um einen IStream zu leeren oder sollte ich lieber etwas anderes verwenden?<br />
Außerdem wollte ich noch fragen wie ich den Stream korrekt endgültig freigebe.</p>
<p>Danke schonmal</p>
<p>gruß<br />
rean</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183915/richtiger-umgang-mit-istream</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 19:10:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183915.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jun 2007 13:46:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Richtiger Umgang mit IStream on Sun, 10 Jun 2007 13:46:40 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich benütze folgenden Quelltext um die optimale Qualitätseinstellung für eine jpg-Datei in Abhängigkeit von der gewünschten Dateigröße zu ermitteln:</p>
<pre><code class="language-cpp">IStream *str=NULL;
 CreateStreamOnHGlobal(NULL, TRUE, &amp;str);

 int upper=100;
 int under=0;
 int size=102400;
 int oldqual=0;
 _ULARGE_INTEGER a;
 a.LowPart=0;
 a.HighPart=0;
 _LARGE_INTEGER b;
 b.LowPart=0;
 b.HighPart=0;

for(int i=0; i&lt;7; i++)
{
 quality=(upper+under)/2;

 if(quality==oldqual) break;
 oldqual=quality;
 encoderParameters.Parameter[0].Value = &amp;quality;

  :arrow_right: str-&gt;SetSize(a);
  :arrow_right: str-&gt;Seek(b,STREAM_SEEK_SET,NULL);

 image-&gt;Save(str, &amp;encoderClsid, &amp;encoderParameters);

 STATSTG str_stat;
 str-&gt;Stat(&amp;str_stat, STATFLAG_NONAME);

 if(str_stat.cbSize.LowPart &gt; size)
  upper=quality;
 if(str_stat.cbSize.LowPart &lt; size)
  under=quality;
}
</code></pre>
<p>Funktioniert soweit auch recht gut. Meine Frage bezieht sich auf die zwei markierten Zeilen.<br />
Ist dies der korrekte Weg um einen IStream zu leeren oder sollte ich lieber etwas anderes verwenden?<br />
Außerdem wollte ich noch fragen wie ich den Stream korrekt endgültig freigebe.</p>
<p>Danke schonmal</p>
<p>gruß<br />
rean</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302471</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Sun, 10 Jun 2007 13:46:40 GMT</pubDate></item><item><title><![CDATA[Reply to Richtiger Umgang mit IStream on Mon, 11 Jun 2007 05:55:39 GMT]]></title><description><![CDATA[<p>Der Stream ist leer von Beginn an. Die zwei Statements kannst Du entfernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302864</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 11 Jun 2007 05:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Richtiger Umgang mit IStream on Mon, 11 Jun 2007 06:53:01 GMT]]></title><description><![CDATA[<p>Er muss ja aber bei jedem Schleifendurchlauf erneut geleert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302879</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Mon, 11 Jun 2007 06:53:01 GMT</pubDate></item><item><title><![CDATA[Reply to Richtiger Umgang mit IStream on Mon, 11 Jun 2007 07:44:01 GMT]]></title><description><![CDATA[<p>Oha! Das habe ich nicht übersehen. Aber dann hast Du es richtig gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302904</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 11 Jun 2007 07:44:01 GMT</pubDate></item></channel></rss>