ImageCopy Problem

BartTotal

Mitglied
Hallo
Erstmals Danke, dass du dir die Zeit nimmst mein Problem zu lesen und mir versuchst zu helfen :)

Zu meinem Problem:
Ich habe einen Script von einem anderen Forum bezogen, welcher mir 2 beliebige Bilder von Habbo zusammenstellt. Sogenannte Avatars.

Nun gab es ein Update bei dem Browserspiel Habbo seit da geht der Script nicht mehr. Obwohl es die Bilder die ich von da beziehe noch mit dem selben Link vorhanden sind.

Meine Frage:
Wie kann ich ihn wieder zu laufen bringen?

Link zur Grafik:
avatarimage



Code:
PHP:
<?php
// Header setzten
header("Content-type: image/png");
// Bilder laden
$imgsrc = imagecreatefrompng("http://www.habbo.de/habbo-imaging/avatarimage?user=BartTotal&action=sit&direction=4&head_direction=3&gesture=sml&size=l&img_format=png"); //Foto
$imgzeichen = imagecreatefrompng("http://www.habbo.de/habbo-imaging/avatarimage?user=BartTotal&action=sit&direction=4&head_direction=3&gesture=sml&size=l&img_format=png"); // Bild 2
// Bild Infos
$width = imagesx($imgsrc); // Höhe Hauptbild
$height = imagesy($imgsrc); // Breite Hauptbild
$x = imagesx($imgzeichen); // Höhe Bild 2
$y = imagesy($imgzeichen); // Breite Bild 2
// Bilder erzeugen
$img = imagecreatetruecolor($width, $height);
// Bild einfügen
imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height);
// Wasserzeichen einfügen
$abstand_links = 100;
$abstand_oben = 200;
imagecopy($img, $imgzeichen, $abstand_links, $abstand_oben, 0, 0, $x, $y);
// Bild anzeigen
imagepng($img);
// Speicher freigeben
imagedestroy($img);
?>


Ich weiss das es mit dem Update zu tun hat, da der Script funktioniert wenn ich das Bild von einem andern Habbo (mit älterer Version) verwende, einwandfrei Funktioniert.

Nur das halt der Avatar nicht der selbe ist.

Danke in Voraus.
 
Hast du noch mehr Informationen als "geht nicht mehr"?

Wo geht es nicht mehr? Wie ist das Fehlerverhalten?
Gibts ev. Fehlermeldungen?
 
Du scheinst wohl den Quelltext betrachtet zu haben. Dieser hat mit diesem Script nichts zu tun, da dieser genau der selbe ist wie wenn ich das Land von Habbo auf zb. .com.br stelle und da läufts.

Achja, wenn ich die Grafik speichere und im Editor öffne erhalte ich folgendes:
PHP:
Warning: imagecreatefrompng(http://www.habbo.de/habbo-imaging/avatarimage?user=BartTotal&action=sit&direction=4&head_direction=3&gesture=sml&size=l&img_format=png): failed to open stream: HTTP request failed! HTTP/1.1 463 Unknown
in /home/.sites/121/site6189746/web/TEST/habbohead.php on line 5

Warning: imagesx() expects parameter 1 to be resource, boolean given in /home/.sites/121/site6189746/web/TEST/habbohead.php on line 8

Warning: imagesy() expects parameter 1 to be resource, boolean given in /home/.sites/121/site6189746/web/TEST/habbohead.php on line 9

Warning: imagecreatetruecolor(): Invalid image dimensions in /home/.sites/121/site6189746/web/TEST/habbohead.php on line 15

Warning: imagecopy() expects parameter 1 to be resource, boolean given in /home/.sites/121/site6189746/web/TEST/habbohead.php on line 17

Warning: imagecopy() expects parameter 1 to be resource, boolean given in /home/.sites/121/site6189746/web/TEST/habbohead.php on line 22

Warning: imagepng() expects parameter 1 to be resource, boolean given in /home/.sites/121/site6189746/web/TEST/habbohead.php on line 24

Warning: imagedestroy() expects parameter 1 to be resource, boolean given in /home/.sites/121/site6189746/web/TEST/habbohead.php on line 26

Wobei alles Folge Fehlermeldungen sind von der ersten.
 
Zuletzt bearbeitet von einem Moderator:
Hi

also den gemeldeten HTTP-Fehler 463 gibts offiziell überhaupt nicht...
anscheinend hängt der Erfolg/Misserfolg von irgendwelchen HTTP-Headern/Werten bzw. Kombinationen davon ab, die bei üblichen Browsern vorhanden sind, aber bei dem von PHP ausgehenden Request nicht. Mit anderen Worten, Habbo hat Probleme mit dem HTTP-Protokoll und ist damit einfach schlecht programmiert (zumindest der Teil).

(Bzw. manche Seiten blocken Zugriffe, die vermutlich von Programmen ausgehen, absichtlich, weil sie keine automatischen Contentgrabber wollen, aber dafür gibts noch immer passende Codes (Forbidden usw.). Ein Wert 463 ist einfach Unsinn, ganz egal ob absichtlich, oder nicht.)

Was man da macht:
1) Nachschauen, was der eigene Browser (bei dem es geht) so schickt, und zB. mit dem Programm Curl
herumprobieren welcher Teil nötig ist damit man das Bild bekommt. Wenn Zeit schau ich später (auch) einmal drauf.
2) Dann mit Curl (diesmal als PHP-Plugin statt alleinstehendes Programm) den funktionierenden Request
nachbauen und die Datei so laden, statt dem imagecreatefrompng alles zu überlassen.
 
Okey. Du scheinst mir sehr viel Ahnung davon zu haben. Hab mir nicht gedacht das das Problem (für mich) so schwer wiegend ist. Ich google das mal und mach mich schlau.
Danke dir jedenfalls für jede weitere Hilfe.
 
Problem gelöst:

1) Es ist tatsächlich eine absichtliche Sperre anhand von Useragents implementiert,
die sich ziemlich dumm verhält (463...). Lösbar mit Curl, Code unten.

2) Der Aufruf mit http leitet automatisch zu https weiter. Curl macht da nicht automatisch mit,
einfachste Abhilfe ist die Url zu Https zu ändern.

PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.habbo.de/habbo-imaging/avatarimage?user=BartTotal&action=sit&direction=4&head_direction=3&gesture=sml&size=l&img_format=png");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5');
$output = curl_exec($ch);
curl_close($ch);
Die Dateidaten sind jetzt in $output und können mit den image-Funktionen weiterverarbeitet werden.
Die Variablennamen sind Beispiele, können natürlich geändert werden.
Die Url (diesmal mit https) natürlich auch.

Der Useragent (Mozilla...blabla) auch, aber da eben aufpassen,
dass man was hat, was akzeptiert wird. Im Zweifelsfall einfach so lassen.
 
Dann hätte ich die Url einfach auf https ändern können. Da lädt der Browser (MO, Op. und chrome) unendlich lange. Ohne eine Meldung
 
Zurück