» 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: 49728
Chats: 11159
Wohnort: Lohmar


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
450
06.11.2008, 16:50
chartinael
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
464
19.09.2007, 14:36
qrawl
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
21
28.06.2015, 13:33
arti1012
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
210
07.06.2011, 20:20
Pumsti
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
13.125
12.08.2012, 08:15
Guiseppe
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
215
29.09.2011, 10:35
Honda_Civic_Boy_VB
Airbag Funktion
Hallo, kann mir mal einer sagen wie unser Airbag ausgelöst wird? Dafür muss es ja ein Aufprallsensor geben, wo sitzt dieser und wie funktioniert...
von Ingo01
3
90
10.11.2016, 16:20
stussy
ZV ohne Funktion
Hallo, ich habe das Problem, das mein ZV mit einen Schlüssel nicht Funktioniert, ich weiß von anderen Hersteller das man Schlüssel anlernen, codieren muss, habe vor drei Wochen einen komplett reset durchgefürt, gibt es sowas auch bei Honda und wie geht...
von wund
1
247
23.02.2011, 21:20
Spink
Lüftung ohne Funktion
Hallo ihr, jetzt wo es so extrem warm ist funktioniert meine Lüftung net mehr :cry: Wenn ich den Knopf für die Lüftung drücke geht die Anzeige im Display zwar nach oben aber es kommt keine Luft raus.Sicherungen habe ich kontrolliert.Kommen ja nicht so...
von EE9 Pilot
15
456
21.06.2013, 16:03
EE9 Pilot
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
161
29.11.2015, 21:05
Revenant
© 2004 - 2017 www.programmierer-forum.de | Communities | Impressum |