» imagebmp(): gute Funktion gefunden!

Ausgabe meiner IP-Cam gezielt per PHP aufnehmen?Neuen Thread eröffnenNeue Antwort erstellenrmdirs() Verzeichnis rekursiv löschen (+ Unterverzeichnisse)
AutorNachricht
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 50604
Chats: 11159
Wohnort: Hennef


Meine eBay-Auktionen:
20.04.2010, 09:17
zitieren

Ich habe hier eine gute imagebmp Funktion gefunden, die ich nur maginal optimiert bzw. neu formatiert habe.

8 und 24 Bit ohne Kompression habe ich getestet. 32 Bit wird nicht unterstützt, ist aber zu verschmerzen.

function imagebmp($im, $filename='', $bit=24, $compression=0) {
// version 1.00
if (!in_array($bit, array(1, 4, 8, 16, 24, 32))) {
$bit = 24;
}
else if ($bit == 32) {
$bit = 24;
}
$bits = pow(2, $bit);
imagetruecolortopalette($im, true, $bits);
$width = imagesx($im);
$height = imagesy($im);
$colors_num = imagecolorstotal($im);
$rgb_quad = '';
if ($bit <= 8) {
for ($i = 0; $i < $colors_num; $i++) {
$colors = imagecolorsforindex($im, $i);
$rgb_quad .= chr($colors['blue']) . chr($colors['green']) . chr($colors['red']) . "\0";
}
$bmp_data = '';
if ($compression == 0 || $bit < 8) {
$compression = 0;
$extra = '';
$padding = 4 - ceil($width / (8 / $bit)) % 4;
if ($padding % 4 != 0) {
$extra = str_repeat("\0", $padding);
}
for ($j = $height - 1; $j >= 0; $j --) {
$i = 0;
while ($i < $width) {
$bin = 0;
$limit = $width - $i < 8 / $bit ? (8 / $bit - $width + $i) * $bit : 0;
for ($k = 8 - $bit; $k >= $limit; $k -= $bit) {
$index = imagecolorat($im, $i, $j);
$bin |= $index << $k;
$i++;
}
$bmp_data .= chr($bin);
}
$bmp_data .= $extra;
}
}
// RLE8
else if ($compression == 1 && $bit == 8) {
for ($j = $height - 1; $j >= 0; $j--) {
$last_index = "\0";
$same_num = 0;
for ($i = 0; $i <= $width; $i++) {
$index = imagecolorat($im, $i, $j);
if ($index !== $last_index || $same_num > 255) {
if ($same_num != 0) {
$bmp_data .= chr($same_num) . chr($last_index);
}
$last_index = $index;
$same_num = 1;
}
else {
$same_num++;
}
}
$bmp_data .= "\0\0";
}
$bmp_data .= "\0\1";
}
$size_quad = strlen($rgb_quad);
$size_data = strlen($bmp_data);
}
else {
$extra = '';
$padding = 4 - ($width * ($bit / 8)) % 4;
if ($padding % 4 != 0) {
$extra = str_repeat("\0", $padding);
}
$bmp_data = '';
for ($j = $height - 1; $j >= 0; $j--) {
for ($i = 0; $i < $width; $i++) {
$index  = imagecolorat($im, $i, $j);
$colors = imagecolorsforindex($im, $index);
if ($bit == 16) {
$bin = 0 << $bit;
$bin |= ($colors['red'] >> 3) << 10;
$bin |= ($colors['green'] >> 3) << 5;
$bin |= $colors['blue'] >> 3;
$bmp_data .= pack("v", $bin);
}
else {
$bmp_data .= pack("c*", $colors['blue'], $colors['green'], $colors['red']);
}
}
$bmp_data .= $extra;
}
$size_quad = 0;
$size_data = strlen($bmp_data);
$colors_num = 0;
}
$file_header = 'BM' . pack('V3', 54 + $size_quad + $size_data, 0, 54 + $size_quad);
$info_header = pack('V3v2V*', 0x28, $width, $height, 1, $bit, $compression, $size_data, 0, 0, $colors_num, 0);
if ($filename != '') {
$fp = fopen($filename, 'wb');
fwrite($fp, $file_header . $info_header . $rgb_quad . $bmp_data);
fclose($fp);
return true;
}
echo $file_header . $info_header. $rgb_quad . $bmp_data;
return true;
}

Das passende imagecreatefrombmp-Gegenstück gibts hier:
http://www.programmierer-forum.de/function-imagecreatefrombmp-laeuft-mit-allen-bitraten-t143137.htm


pn email
Gast 
20.04.2010, 09:17
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "imagebmp(): gute Funktion gefunden!" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...

Zu function imagecreatefrombmp findest Du weitere passende Themen in der Suche.


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Gute Alternative zu Type-R Hecklippe gefunden
Hallo, lange habe ich nach einer Hecklippe gesucht, die der Type-R Lippe recht nahe kommt, aber etwas spezielles hat, um sich von der Masse abzuheben. Und diese will ich euch natürlich nicht vorenthalten. Besonderer Vorteil ist bei dieser...
von Jiss
1
448
06.11.2008, 16:50
chartinael
Sound Off Funktion
hätte da mal ne kleine Anregung. Die Chat Sounds können einem Teilweise echt auf den Geist gehen :yes: Ich weis nicht wie oft ich mich zu Tode erschrecke, weil ich den Chat im Hintergrund habe und auf einmal son Sound kommt! Meistens hatte ich dann...
von HugoFreund
3
203
07.06.2011, 20:20
Pumsti
array in funktion
Hallo , ich möchte 4 zahlen nach der Größe sortieren, das ist für mich Jetzt kein Problem, allerdings möchte ich die Sortierung in einer Funktion machen. Aber die zahlen sollen trotzdem in der main ausgegeben werden also call by reference, kann mir...
[C++]von arti1012
1
16
28.06.2015, 13:33
arti1012
Contents Funktion
Hallo, ist es irgendiwe möglich in PMWiki eine art contents funktion (wie z.B. im MediaWiki das die "Überschriften" automatisch am seitenanfang in ner contents-box zusammengefasst werden) einzubauen? Vielleicht gibt es ja auch schon eine...
von qrawl
0
456
19.09.2007, 14:36
qrawl
LSD Funktion
Wollte mal wissen ob irgendjemand von euch weiß wie man herausfindet ob das LSD so funktioniert wie es soll? Oder könnte man sonst überhaupt nicht fahren. Wie weiß ich ob das LSD wirklich jetzt sperrt oder...
von Honda_Civic_Boy_VB
4
213
29.09.2011, 10:35
Honda_Civic_Boy_VB
Mittelwert Funktion in C
Hallo, ich bin nicht so gut in Programmieren. Möchte das lernen aber ich weiss nicht wie. Wir haben Programmieren C und C++ in der Schule aber irgend wie verstehe ich das nicht so. Vielleich irgend welche Tipps wie ich mitch verbessern kann oder...
[C]von len4ik
7
10.414
12.08.2012, 08:15
Guiseppe
Fensterheber ohne Funktion
Hi Leute, habe mir diese Woche einen CRX del Sol von 95 gekauft. Der Wagen ist nach einer Standzeit von 5Monaten eigentlich in einem guten Zusatand, aber die Fensterheber funktionieren absolut nicht.Die elektrischen Spiegel funktionieren tadellos,...
von Muese
18
1.429
14.05.2008, 20:23
Jensen
tacho ohne funktion
tach leute .. mein problem ist mein del sol ...hab ne kupplung gewechselt und jetzt geht nur noch der drehzahlmesser ...hab auch schon die fehlerliste aus´m werkstatthandbuch verfolgt aber komm nicht weiter ... ..also da steht am 3p stecker vom...
von crx_b18c6
6
121
04.09.2011, 12:35
wuddelcrew
LWR ohne Funktion
Salve zusammen, kürzlich hat die Leuchtweitenregulierung auf der Beifahrerseite aufgegeben. Heute ist mir aufgefallen, daß es auch die linke nicht mehr tut. Vor zwei Wochen ging wenigstens diese noch... Wie gehe ich am besten auf Fehlersuche? Das WHB hat...
von LSi
3
135
13.02.2013, 22:04
white*angel
Düsen Scheibenwischer Funktion?!
Hallo, ich fahre seit knapp einem halben Jahr wieder einen Honda Civic, diesmal ein Ej9 als Prefacelift. Mir ist es anfangs nicht so aufgefallen, aber trotzdem kam es mir so ungewohnt vor. Wenn ich den Wischerhebel zu mir Ziehe dann passiert rein garnix....
von TanabeR33
11
153
29.11.2015, 21:05
Revenant
© 2004 - 2016 www.programmierer-forum.de | Communities | Impressum |