» 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: 50930
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
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
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
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
11.566
12.08.2012, 08:15
Guiseppe
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
Bremsleuchten auser Funktion?????
Hallo, mir ist gestern aufgefallen, dass beim betätigen der Bremse, die Bremsleuchten nicht funktionieren. Mein Auto Civic EG4 Meinen Frage an euch: Weiß jemand woran das liegen könnte?? Habe selber nicht so die Ahnung und kam auch noch nicht...
von t04r
9
232
08.06.2008, 19:57
t04r
gwindefahrwerk? welches? Funktion
hallo. bin am überlegen mir ein gewinde fahrwerk einzubauen das nicht teuer ist wie sau und trotzdem gut ist. tieferlegung bis 60 reicht denke ich aus.( vielleicht hat ja einer eins zu verkaufen) Habe zur zeit federn nur drin weiß aber nicht wie...
von Black EJ6
18
483
25.07.2009, 10:07
ds-90
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
139
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
146
13.02.2013, 22:04
white*angel
© 2004 - 2016 www.programmierer-forum.de | Communities | Impressum |