Forum: PC-Programmierung PHP komische Zeichen anstatt Bild


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen
Wie im Titel schon steht bekomm wenn ich ein bild ausgeben will nur 
komische Zeichen wie diese 
(8%�1#(�Y����b9NEB<�GJfRx���y�+^��~�>�"��[G53[�).

Code
1
$IconUrl = "images/itemicons/" . $json_BotInv[0][4] . ".png";
2
3
$item = imagecreatefrompng($IconUrl);
4
5
imagepng($item);

Was ist der fehler????


MFG
Joel

von Daniel A. (daniel-a)


Bewertung
0 lesenswert
nicht lesenswert
Du musst den Content Type setzen, sonst weiss der Browser nicht, dass es 
ein bild ist. Einfach ganz am anfang:
1
header("Content-Type: image/png");

von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Habs gemacht sieht jetzt so aus:
1
<?php
2
    header("Content-Type: image/png");
3
4
    require 'steamauth/steamauth.php';
5
    require 'steamauth/userInfo.php';
6
    require 'steamauth/BotInv.php';
7
    require 'ItemIconScript.php';
8
9
    
10
11
    $json_BotInv = @BotInventory();
12
13
    @GetItemIcons($json_BotInv);
14
15
    //$IconUrl = @EchoItemIcon($json_BotInv);
16
17
    $IconUrl = "images/itemicons/" . $json_BotInv[0][4] . ".png";
18
19
    $item = imagecreatefrompng($IconUrl);
20
21
    imagepng($item);

jetzt habe ich aber einen weissen browser.........

von Daniel A. (daniel-a)


Bewertung
0 lesenswert
nicht lesenswert
Gehe mal in die Browserconsole in den Netzwerk tab und lade die Seite 
neu. Ist es einfach ein weisses Bild, oder hasst du einen 500 Fehler?

von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kein Fehler
Der Browser ist halt weiss und oben links hats halt das Zeichen wenn ein 
Bild nicht richtig dargestellt werden konnte.

Wenn noch was schauen musst Link : csgotrades.org

(lange Ladezeit weil ich noch test scripts in der index datei hab die am 
anfang ausgefürt werden...)

von Stryker (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Ausgabe ist leer (contentLength = -1). Es kommt vermutlich zu einem 
Fehler (guck mal ins Error log) oder das Vorlagebild ist nicht lesbar.

von Stryker (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mach mal ein var_dump($item); rein. Dann kannst du schauen ob die 
Imageresouce geladen ist...

von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hats wirklich gegeben aber sind komisch....

Code
1
$IconUrl = "images/itemicons/" . $json_BotInv[0][4] . ".png";
2
3
$item = imagecreatefrompng($IconUrl);
4
5
imagepng($item);

Hab mal die IconUrl geechot und bekam: 
images/itemicons/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4N 
UX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopuP1FAR17OORIQJF_tW7mb-GkvP 
9JrafxGkDv8B13LyT8N2l2QHirhI4az2mINSVclQ9MFGBrFK5x-3mgMW5uIOJlyWQ8lzxbw. 
png

hab dann im error log gekuckt da war der Link nur : 
images/itemicons/.png

Was den der Fehler???

von T.roll (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joel schrieb:
> lange Ladezeit weil ich noch test scripts in der index datei hab die am
> anfang ausgefürt werden...

Du versucht aber nicht, das Bild inline auszugeben? Es muss mit einem 
extra Aufruf ausgeben werden, ohne weitere Inhalte.

von TestX (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wo kommt die url her ? Die prüfst bei der ausgabe weder ob das bild 
existiert noch ob es eine directory traversal attack sein kann...

von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Url/Pfad zu dem BIld habe ich gespeichert. Die Scripts die ich 
erwähnt habe downloaden das Bild und bearbeiten es auf die richtige 
grösse und schreiben ein Text drauf. Dann wird das Bild unter 
images/itemicons/........png gespeichert. Den Link habe ich gespeichert. 
Danach will ich das gespeicherte Bild ausgeben aber dann kommt der 
fehler...

von Dominik G. (domeg)


Bewertung
0 lesenswert
nicht lesenswert
http://csgotrades.org/images/itemicons/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopuP1FAR17OORIQJF_tW7mb-GkvP9JrafxGkDv8B13LyT8N2l2QHirhI4az2mINSVclQ9MFGBrFK5x-3mgMW5uIOJlyWQ8lzxbw.png

Geht doch...
Ist also ein Fehler im HTML-Code... Du gibst die URL zum Bild ganz oben 
im Code einfach aus, ohne IMG-Tag.
1
    
2
images/itemicons/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopuP1FAR17OORIQJF_tW7mb-GkvP9JrafxGkDv8B13LyT8N2l2QHirhI4az2mINSVclQ9MFGBrFK5x-3mgMW5uIOJlyWQ8lzxbw.png
3
<!DOCTYPE html>
4
<html>
5
    <head>

Edit: Ich würde dir auch noch wärmstens empfehlen, deine Seite mal hier 
durchchecken zu lassen: https://validator.w3.org/ Es sind wohl einige 
Fehler enthalten.

: Bearbeitet durch User
von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo domeg

Wenn du denn thread gelesen hättest wäre dir aufgefallen dass ich den 
Link geechot hab um zu vergleichen was im fehler Log stan und was in der 
Variable stand...

Hier ist der ganze php Code bevor der Html teil anfängt:
1
<?php
2
    session_start();
3
    header("Content-Type: image/png");
4
5
    require 'steamauth/steamauth.php';
6
    require 'steamauth/userInfo.php';
7
    require 'steamauth/BotInv.php';
8
    require 'ItemIconScript.php';
9
10
    $json_BotInv = @BotInventory();
11
12
    @GetItemIcons($json_BotInv);
13
14
    //$IconUrl = @EchoItemIcon($json_BotInv);
15
16
    $IconUrl = "images/itemicons/" . $json_BotInv[0][4] . ".png";
17
18
    echo $IconUrl;
19
20
    $item = imagecreatefrompng($IconUrl);
21
22
    imagepng($item);
23
24
    if(isset($_SESSION['steamid'])){
25
        $id = $_SESSION['steamid'];
26
    }
27
    else{
28
        #Not logged in
29
    }
30
?>

von Dominik G. (domeg)


Bewertung
0 lesenswert
nicht lesenswert
Und wo ist dann das Problem? Der Textoverlay hat wohl funktioniert, das 
abspeichern auch.

Oder willst du in ein und derselben Seite (index.php) das Bild mit PHP 
bearbeiten & ausgeben UND HTML-Code ausgeben? Das geht nicht.

Verwende für die Bearbeitung/Verarbeitung der Bilder ein eigenes Script 
oder eine abweichende URL, z.B. image.php oder index.php?what=img .

: Bearbeitet durch User
von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hab dich wohl falsch verstanden....

Mit @GetItemIcons tu ich dies ja. Ich hab dann auch vor das script um 
die Icons auszugeben in eine andere Datei zu verbannen. Ich habe es auf 
der Index.php datei weil da die Fehler sofort auf der seite sichtbar 
sind.

Da ich mich mit PHP, HTML, CSS, JS, JQuery usw. ned gut auskenne 
müsstets du mir das was ich falsch gemacht habe genau erklären und auch 
sagen was man dagegen tun kann

MFG
Joel

von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
p.s. @GetItemIcons ist in der Datei ItemIconScript.php

von Dominik G. (domeg)


Bewertung
0 lesenswert
nicht lesenswert
Joel schrieb:
> Mit @GetItemIcons tu ich dies ja.

Da liest du vermutlich die Pfade zu den Bildern ein.

Mit http://php.net/manual/de/function.imagecreatefrompng.php liest du 
die PNG-Bilder in PHP ein und mit 
http://php.net/manual/de/function.imagepng.php gibst du die binären 
Daten direkt wieder aus, ohne sie zu bearbeiten.

Meine Annahme ist daher, dass du die Bilder schon vorher oder woanders 
bearbeitet und abgespeichert hast und nur noch anzeigen lassen willst.

Also brauchst du nur ein IMG-Tag in HTML mit dem passenden Pfad 
auszugeben.
Etwa:
1
<?php
2
    session_start();
3
4
    require 'steamauth/steamauth.php';
5
    require 'steamauth/userInfo.php';
6
    require 'steamauth/BotInv.php';
7
    require 'ItemIconScript.php';
8
9
    $json_BotInv = @BotInventory();
10
11
    @GetItemIcons($json_BotInv);
12
13
    //$IconUrl = @EchoItemIcon($json_BotInv);
14
15
    $IconUrl = "images/itemicons/" . $json_BotInv[0][4] . ".png";
16
17
    echo "<img src=\"" . $IconUrl . "\"></img>";
18
19
    if(isset($_SESSION['steamid'])){
20
        $id = $_SESSION['steamid'];
21
    }
22
    else{
23
        #Not logged in
24
    }
25
?>

Du kannst nicht für deine Datei als ContentType PNG festlegen und 
gleichzeitig HTML-Text ausgeben, das geht nicht.
ContentType PNG brauchst du nur, wenn du auf dieser URL NUR das Bild mit 
imagepng() und sonst nichts anders ausgibst.

von Joel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Du bist mein Held es  hat funktioniert!!!!!!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.