Jpg Bilder einlesen und skalieren
-
1
5.3.3.1 schrieb:
sizeof(char), sizeof(signed char) and
sizeof(unsigned char) are 1.Wieso sollte ich mittlerweile? oO
-
Enno schrieb:
Oder meintest du bei sowas:
12211222211
Die erste 1 steht ja alleine udn hätte nur eine länge von 1?Noch ein Grund, RLE und Huffman nacheinanderzuschalten. Man hat kostenlose Escape-Zeichen.
12211222211
wäre in ASCII
49 50 50 49 49 50 50 50 50 49 49
und nach RLE vielleicht (256 als Zeichen; Jetzt kommt ein Byte=Anzahl und dann ein Byte für das sich wiederholende Zeichen)
49 50 50 49 49 256 4 50 49 49
und Huffman hat dann keinerlei Schmerzen, einen 257 großen Zeichenvorrat zu schreiben.
-
Skym0sh0 schrieb:
1
5.3.3.1 schrieb:
sizeof(char), sizeof(signed char) and
sizeof(unsigned char) are 1.Wieso sollte ich mittlerweile? oO
Weil Du mittlerweile ein Alter Hase in C++ bist und so ein Rauschen wie sizeof(char) nicht mehr in den Code stecken musst.
-
...
-
Ich und Alter Hase???
Herr Henkel, ich bin um den Divisor 2 bis 3 mal jünger als Sie, ich habe nicht annähernd die Erfahrung wie die Großen hier im Forum, selbst die tiefergehenden Sprachkonzepte durchblicke oder kann ich nicht. Die meisten Features aus dem neuen Standard verstehe ich nichtmals. TMP ist ein Fremdwort für mich (und für meinen Compiler auch ;D)Und ich bin eine alter Hase?
-
...
-
Bei einem Problem machst Du Klickediklack, und schaust im Standard nach. Ist das nix?
-
Ja, ok, groß bin ich, das stimmt. Aber das hat nix mit meinen Programmierkenntnissen zu tun.
-
Müsst ihr das hier diskutieren?
-
Nein, müssen wir nicht. Aber es bietet sich halt an
-
Ich komm irgendwie nicht weiter, wie ich die "Frequenzen" oder "Wahrscheinlichkeiten" von den einzelnen Chars bekomme.
D.h. bei einer Eingabe von:04 a3 23 3a 4d 31 49 4d 47 0d 0a 45 45 43 54 49
Was jetzt nur ein kurzer Teil ist. Ich hab mir da jetzt extrem viele Beispiele angeschaut im netz aber die verwirren meist nur. Vielleicht kann mir hier ja noch mal jemand einen Tipp geben wie ich sowas anstellen könnte.
-
So einfach wie möglich:
std::vector<std::uint8_t> bytes = readJpegBytes(); // Das darfst du implementieren! std::array<std::size_t, std::numeric_limits<std::uint8_t>::max()> counter; for(std::uint8_t cur : bytes) ++counter[cur]; for(std::size_t i = 0; i < counter.size(); ++i) std::cout << std::hex << i << "\tkommt " << counter[i] << "x vor\n";
-
Ethon schrieb:
std::vector<std::uint8_t> bytes = readJpegBytes(); // Das darfst du implementieren! std::array<std::size_t, std::numeric_limits<std::uint8_t>::max()> counter; for(std::uint8_t cur : bytes) ++counter[cur]; for(std::size_t i = 0; i < counter.size(); ++i) std::cout << std::hex << i << "\tkommt " << counter[i] << "x vor\n";
Leider nicht korrekt.
-
Was?
-
Furble Wurble schrieb:
Leider nicht korrekt.
Da wird der Standardbibliothek eine an sich überflüssige Klasse spendiert und das Commitee hat es nicht fertig gebracht, sie so zu designen, dass sie der Durchschnittsnutzer korrekt verwendet.
Immerhin (und das ist ungemein wichtiger) scheint die Richtlinie, die Uniform Initialization unter allen Umständen zu vermeiden durchgedrungen zu sein.
Good Job, C++11.
-
Ethon schrieb:
Was?
Zu kurz.
Dasstd::array
ist zu kurz.
-
Furble Wurble schrieb:
Ethon schrieb:
Was?
Zu kurz.
Dasstd::array
ist zu kurz.Oh, ist mir gar nicht aufgefallen.
Ethon sollte ausserdem noch
{}
hinter die Definition schreiben, sonst ist der Inhalt des Arrays undefiniert.
-
Furble Wurble schrieb:
Ethon schrieb:
Was?
Zu kurz.
Dasstd::array
ist zu kurz.Argh wieso hatte ich den Gedanken dass numeric_limits<uint8_t>::max == 256 ist.
Aber hey, bei std::array merkt man den Fehler ja zum Glück im ersten Durchlauf im Debugmodus.
-
Wie kann ich an die Information aus dem JPEG Header?
"Zusätzlich werden im Header der JPEG-Datei Informationen über die Abmessung des Bildes, die Art der Kodierung und die Quantisierungsniveaus abgelegt."