Bild mit PHP anzeigen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Habe es eben getestet und mir wird das Bild angezeigt..

Was genau ist dein Ziel damit?

verreisterNutzer  28.11.2018, 20:04

Hmm ok.

Gibt es eine andere Möglichkeit? Die PHP Seite soll nachher einfach als .PNG erkannt werden (TS3 Banner).

0
ikinikin  28.11.2018, 20:08
@verreisterNutzer

Das HTML, welches du im Browser siehst, wird vom Browser generiert. Wenn du deine PHP Datei mit etwas anderem aufrufst, solltest du das PNG als Antwort bekommen.

0
verreisterNutzer  28.11.2018, 20:13
@ikinikin

Habe das Bild jetzt mal mit HTML (<img src="">) hingemacht.

Kann ich nun irgendwie machen, dass ich aufs Bild drauf schreibe und das dann per URL abrufen (mit Text auf dem Bild), direkt aufs Bild (nicht auf die .php Datei)? Wenn ich TS3 auf die .php Datei weise, benutzt er nicht das Bild. Ich muss ihn also auf das Bild zuweisen und auf's Bild noch einen Text schreiben.

0
ikinikin  28.11.2018, 20:16
@verreisterNutzer

Ich habe noch nicht mit TS gearbeitet aber ich vermute, dass TeamSpeak ein echtes Bild erwartet (was eigentlich mit so einer .php-Datei wie du sie oben hast funktionieren sollte). Du kannst also nicht einfach mit HTML irgendeinen Text über ein Bild schreiben. Das heißt du musst die Bilddatei bearbeiten, sodass der Text tatsächlich auf dem Bild ist. Das HTML benötigst du eigentlich nicht..

0
verreisterNutzer  28.11.2018, 20:17
@ikinikin

Hab da sowas gefunden, probiere das mal aus:

// Setze Content-Type
header('Content-Type: image/png');

// Erzeuge das Bild
$im = imagecreatetruecolor(400, 30);

// Erzeuge einige Farben
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// Der zu zeichnende Text
$text = 'Testing...';
// Bei Bedarf ist der Pfad anzupassen
$font = 'arial.ttf';

// Füge etwas Schatten zum Text hinzu
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Füge den Text hinzu
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Die Verwendung von imagepng() ergibt bessere Textqualität als imagejpeg()
imagepng($im);
imagedestroy($im);
0
verreisterNutzer  28.11.2018, 20:26
@ikinikin

Ich muss nicht mal mein eigenes Bild einfügen.

Nichtmal diese Fläche, welche generiert wird, anstatt das Bild, wird bei mir angezeigt. Ich erhalte direkt diesen schwarzen Screen mit dem Quadrat in der Mitte. Ich versuche es mal mit einem anderen Browser, vielleicht ist Chrome einfach zu blöd.

0
ikinikin  28.11.2018, 20:28
@verreisterNutzer

Hast du auch die Schriftart im Verzeichnis?

$font = 'arial.ttf';

Am Browser liegt das glaube ich eher nicht

0
verreisterNutzer  28.11.2018, 20:31
@ikinikin

Ich habe bei mir die Schriftart geändert auf die, die ich installiert habe.

Beim Internet Explorer sieht's besser aus.

Dort wo das Bild wäre sehe ich komische Zeichen, jedoch ist bei mir Internet Explorer so veraltet, dass er die Datei nicht richtig darstellt, er schreibt einfach nur alles dahin, als wäre die komplette Datei mit <p> geschrieben.

�PNG

���
IHDR����������߇���	pHYs�������+����IDATx���A
� �0����?��U����,���;���a�d�aX@�a�d�aX@�a�d�aX@�a�d�aX@�a�d�aX@�a�d�aX@�a�d�aX@��i9��N�����IEND�B`�
0
ikinikin  28.11.2018, 20:33
@verreisterNutzer

Was meinst du mit installiert? Hast du den ganzen Pfad zur .ttf Datei angegeben?

Als besser würde ich das nicht bezeichnen ^^

0
verreisterNutzer  28.11.2018, 20:36
@ikinikin

Die .ttf Datei ist dort wo die .php Datei ist, in der .php Datei steht als Pfad einfach nur den Namen der .ttf Datei.

Besser ist es eigentlich schon, ich bin mir sicher, Internet Explorer würde das Bild anzeigen, wenn er denn die Seite überhaupt anzeigen könnte. Sieht bei mir so aus:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Bannerbot</title>
  </head>
  <body>
    <style>
    @font-face {
    font-family: Offlander;
    src: url(Offlander_Rough.ttf);
    }
    </style>
    <br />
�PNG

���
IHDR����������߇���	pHYs�������+����IDATx���A
� �0����?��U����,���;���a�d�aX@�a�d�aX@�a�d�aX@�a�d�aX@�a�d�aX@�a�d�aX@�a�d�aX@��i9��N�����IEND�B`�  </body>
</html>

0
ikinikin  28.11.2018, 20:38
@verreisterNutzer

Um dein eigenes Bild zu verwenden und anschließend Text darauf zu schreiben, musst du die erste Zeile durch folgendes ersetzen:

//$im = imagecreatetruecolor(400, 30); alt
$im = imagecreatefrompng("./image.png");
0
ikinikin  28.11.2018, 20:41
@verreisterNutzer

Du darfst kein HTML benutzen wenn du eine PNG Datei ausgeben willst. Es darf außerdem keinerlei Ausgaben vor einem header() Aufruf geben.

0
verreisterNutzer  28.11.2018, 20:43
@ikinikin

Ok, habe komplettes HTML entfernt, Datei startet mit PHP und endet mit PHP. Ändert trotzdem nichts an der ganzen Sache. Ist das "./" wichtig vor der Datei (Pfad)?

0
ikinikin  28.11.2018, 20:46
@verreisterNutzer

Es muss nicht zwingend "./" dort stehen, aber der Pfad muss eindeutig sein. Pfade die mit "./" beginnen gehen vom eigenen Verzeichnis aus. Wenn deine .ttf Datei also im selben Verzeichnis ist, wie deine .php Datei, dann könntest du es verwenden.

0
verreisterNutzer  28.11.2018, 20:50
@ikinikin

Hmm ok, meine Dateien:

-- Bannerbot (Ordner)
  |
  |
  -- api (Ordner mit TeamSpeak Framework)
  -- index.php (PHP Datei)
  -- ts3banner.png (Zuverwendendes Bild)
  -- Offlander_Rough.ttf (Zuverwendende Schriftart)

Code für die Schriftart:

$font = './Offlander_Rough.ttf';
0
ikinikin  28.11.2018, 20:54
@verreisterNutzer

Ja so sollte der Pfad stimmen.

Funktioniert es, wenn du

header('Content-Type: image/png');

ganz an den Anfang im PHP setzt? Und evtl. kannst du zum testen den TeamSpeak relevanten Code auskommentieren.

0
ikinikin  28.11.2018, 21:00
@verreisterNutzer
<?php
header('Content-Type: image/png');

$im = imagecreatetruecolor(400, 30);

$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

$text = 'Testing...';
$font = './Offlander_Rough.ttf';

imagettftext($im, 20, 0, 10, 25, $black, $font, $text);

header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

Funktioniert dieser Code? Teste ihn evtl in einer neuen, leeren .php Datei.

0
ikinikin  28.11.2018, 21:05
@verreisterNutzer
Das ist alles, was mir Google Chrome anzeigt.

Ist bei dir ein schwarzes "Quadrat" mit einem Weißen Quadrat Rand in der Mitte?

Wieso heißt die Datei Unbenannt.PNG und nicht xy.php? htaccess oder was?

0
ikinikin  28.11.2018, 21:08
@verreisterNutzer

Kannst du den Link zur php Datei schicken, damit ich sehen kann ob es bei mir ebenfalls so aussieht? Oder ist dieser dir zu "privat"?

0
verreisterNutzer  28.11.2018, 21:12
@ikinikin

Hab noch ein weiteres Verzeichnis auf meinem Server erstellt:

PHP.

Bild.

Auf dem Server ist bei mir kein Quadrat mehr da, aber die Seite ist einfach weiss, also wird das Bild trotzdem nicht angezeigt.

0
ikinikin  28.11.2018, 21:20
@verreisterNutzer

Dieses weiße Kästchen erscheint bei mir, wenn ich eine andere Ausgabe im Code habe. Beispiel:

<?php
header('Content-Type: image/png');

echo "t"; // hier eine Ausgabe

$im = imagecreatefrompng("./tanzverbot.png");

$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

$text = 'Testing...';
$font = './Roboto-Regular.ttf';

imagettftext($im, 20, 0, 10, 25, $black, $font, $text);

header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);

?>

Deshalb empfehle ich dir, deinen Image Code erstmal ohne den TS3 Code zu testen.

0
verreisterNutzer  28.11.2018, 21:22
@ikinikin

Meinst du also, mein TS3 Code zerstört den Rest? Das hat vorhin eigentlich auch funktioniert: https://agiger03.ga/Bannerbot/index.php

Hier ist nur das Problem, dass TS das nicht als Banner zählt, weil es nur übers Bild geschrieben ist und das Bild als Hintergrundbild für die Seite gilt. Sonst wäre das halt perfekt ;)

0
ikinikin  28.11.2018, 21:25
@verreisterNutzer

Nein, aber wenn es auch nur ein Leerzeichen ist, zählt das als Ausgabe was zu dem Kästchen führt.

0
verreisterNutzer  28.11.2018, 21:28
@ikinikin

Hmm.. vielleicht geht das auch viel leichter, mit der Variante, die eigentlich funktioniert. Kann ich vielleicht mit einer separaten Datei eine Art Bild von dieser index.php machen (die, wo das Banner als Hintergrund ist). Dass TS3 dann einfach diese separate Datei als Bild verwendet, welche eine Art Screenshot der index.php beinhaltet.

0
ikinikin  28.11.2018, 21:32
@verreisterNutzer

Evtl schon aber ich glaube das ist komplizierter. Wieso willst du es nicht ohne TS3 testen? Ist ja nur um zu sehen ob das Bild alleine funktioniert ^^

0
ikinikin  28.11.2018, 21:36
@verreisterNutzer

Hast du vor deinem <?php Tag ein Leerzeichen oder eine leere Zeile? Wenn ja dann löschen

0
verreisterNutzer  28.11.2018, 21:37
@ikinikin

Nein, im Internet findet man sowas:

<?php
$html = file_get_contents('http://www.website.any');
preg_match_all( '|<img.*?src=[\'"](.*?)[\'"].*?>|i',$html, $matches ); 
echo $matches[ 1 ][ 0 ];
?>

Damit sollte ich eine Art Foto der Seite machen können, könnte dies klappen?

0
ikinikin  28.11.2018, 21:40
@verreisterNutzer

Damit erhälst du kein Bild sondern den Inhalt von src aus img Tags aus der durchsuchten Seite

0
verreisterNutzer  28.11.2018, 21:41
@ikinikin

Hmm ok :P Ich frage mal Regex9, ob er eine Methode kennt und ob das einfach ist ;)

Also funktionieren tut es irgendwie, kenne Seiten die sowas können, weiss aber nicht, ob die dafür JavaScript verwenden.

0
verreisterNutzer  28.11.2018, 21:53
@ikinikin

Hätte hier nochmal was:

<?php
$Browser = new COM('InternetExplorer.Application');
$Browserhandle = $Browser->HWND;
$Browser->Visible = true;
$Browser->Fullscreen = true;
$Browser->Navigate('http://www.stackoverflow.com');

while($Browser->Busy){
  com_message_pump(4000);
}

$img = imagegrabwindow($Browserhandle, 0);
$Browser->Quit();
imagepng($img, 'screenshot.png');
?>

Ansonsten könnte ich bei php einen Teil JavaScript einbauen, sowie das bei HTML geht (ohne extra Datei)?

0
ikinikin  28.11.2018, 21:58
@verreisterNutzer

Hast du diesen Code getestet?

JavaScript ist normalerweise clientsided. Aber da du ja einen vServer hast ( wie du oft betonst ^^) kannst du ja auch auf deinem Server JavaScript verwenden.

0
verreisterNutzer  28.11.2018, 22:01
@ikinikin

Ich teste diesen Code jetzt mal... weiss nur nicht, wie ich das machen soll, dass er alle 60 Sekunden den Code wieder ausführt, ohne dass jemand die .php Datei aufruft.

0
verreisterNutzer  28.11.2018, 22:06
@ikinikin

Der Code geht nicht, war irgendwie klar :P

Ich suche im Internet mal nach einer PHP Klassenbibliothek, die eine Website zu einem Bild verwandelt, wie Regex9 das oben erwähnt hat.

0
ikinikin  28.11.2018, 22:08
@verreisterNutzer

Du kannst einen Cronjob verwenden, um die Datei regelmäßig aufzurufen. Oh, hat regex9 ja auch schon erwähnt..

0
verreisterNutzer  28.11.2018, 22:16
@ikinikin

Das funktioniert mehr oder weniger. Das Bild hat die falsche Auflösung, mal schauen, ob ich das irgendwo einstellen kann.

Leider kostet dies, ich versuche mal herauszufinden, wie das funktioniert, dann kann ich auf den kostenpflichtigen Service verzichten.

1
verreisterNutzer  28.11.2018, 22:19
@ikinikin
if (!($file_path != null && $file_path !== ''))
            throw new Error(create_invalid_value_message($file_path, "file_path", "html-to-pdf", "The string must not be empty.", "convert_url_to_file"), 470);
        
        $output_file = fopen($file_path, "wb");
        if (!$output_file) {
            $error = error_get_last();
            throw new \Exception($error['message']);
        }
        try {
            $this->convertUrlToStream($url, $output_file);
            fclose($output_file);
        }
        catch(Error $why) {
            fclose($output_file);
            unlink($file_path);
            throw $why;
        }

function convertUrlToStream($url, $out_stream) {
        if (!preg_match("/(?i)^https?:\/\/.*$/", $url))
            throw new Error(create_invalid_value_message($url, "url", "html-to-pdf", "The supported protocols arehttp:/// and https://.", "convert_url_to_stream"), 470);
        
        $this->fields['url'] = $url;
        $this->helper->post($this->fields, $this->files, $this->raw_data, $out_stream);
    }

Kann ich das in meine PHP Datei einbauen?

0
ikinikin  28.11.2018, 22:24
@verreisterNutzer

Naja dieser Teil alleine wird dir nicht weiterhelfen. Da benötigst du schon noch mehr.

0
verreisterNutzer  28.11.2018, 22:38
@ikinikin

Bin dran, er findet aber die Klasse nicht. Klassen importiert man doch mit include("pfad/zur/klasse.php"); richtig?

0
verreisterNutzer  28.11.2018, 22:54
@ikinikin

Hier scheint es wohl anders zu sein.

Habe jetzt die eine Datei in meine .php rein getan. Anscheinend findet er aber eine Klasse nicht, welche eigentlich dadrin sein sollte.

Ich versuch die mal zu finden, glaube das dürfte funktionieren.

0
verreisterNutzer  28.11.2018, 22:59
@ikinikin

Ich krieg Aids:

Fatal error: Uncaught Error: Class 'Spatie\Image\Manipulations' not found in C:\xampp\htdocs\Bannerbot\shoter.php:63 Stack trace: #0 C:\xampp\htdocs\Bannerbot\shoter.php(46): Spatie\Browsershot\Browsershot->__construct() #1 C:\xampp\htdocs\Bannerbot\shoter.php(666): Spatie\Browsershot\Browsershot::url('https://agiger0...') #2 {main} thrown in C:\xampp\htdocs\Bannerbot\shoter.php on line 63

Jedesmal behebt man einen Fehler, dann kommt der nächste...

1
verreisterNutzer  28.11.2018, 23:12
@ikinikin

Hab eigentlich alles wichtige von seiner GitHub Seite befolgt.

Erhalte aber immer noch diesen Fehler:

Parse error: syntax error, unexpected '/', expecting ',' or ';' in C:\xampp\htdocs\Bannerbot\shoter.php on line 2

Line 2:

use browsershot_master/src/Browsershot.php;

Wie soll ich den Pfad denn sonst angeben, wenn ich kein / verwenden darf?

0
verreisterNutzer  28.11.2018, 23:20
@ikinikin

Damit geht's auch nicht. Bin mir jetzt aber beim Pfad auch nicht mehr sicher:

GitHub: use Spatie\Browsershot\Browsershot;

Meins: use browsershot_master\src\Browsershot.php;

Mein gutefrage buggt mal wieder rum^^ Also wunder dich nicht wegen diesem Quelltext bei GitHub, bekomm den net weg und gutefrage hat den automatisch dahin gepackt :P

0
verreisterNutzer  28.11.2018, 23:30
@ikinikin

Ja der Pfad stimmt.

Er verlangt ja eine Klasse, diese Klasse ist in dieser .php welche ich mit diesem Pfad angegeben habe.

0
ikinikin  28.11.2018, 23:45
@verreisterNutzer

Es ist aber nicht der Dateipfad den du bei use nutzen musst. Hast du es mit dem originalen use probiert?

use Spatie\Browsershot\Browsershot;
0
verreisterNutzer  28.11.2018, 23:48
@ikinikin

Ja, hab ich auch, beide gehen nicht.

Scheint wohl als würde es mit Folgendem funktionieren, jedoch kommt jetzt die nächste Klasse, die er nicht findet :(

require_once('browsershot_master/src/Browsershot.php');
    use Spatie\Browsershot\Browsershot;
0
verreisterNutzer  29.11.2018, 00:01
@ikinikin

Glaube nicht, was jetzt gebraucht wird ist keine Datei, die ich runterladen kann:

Fatal error: Uncaught Error: Class 'Spatie\Image\Manipulations' not found in C:\xampp\htdocs\Bannerbot\browsershot_master\src\Browsershot.php:63 Stack trace: #0 C:\xampp\htdocs\Bannerbot\browsershot_master\src\Browsershot.php(46): Spatie\Browsershot\Browsershot->__construct() #1 C:\xampp\htdocs\Bannerbot\shoter.php(6): Spatie\Browsershot\Browsershot::url('https://agiger0...') #2 {main} thrown in C:\xampp\htdocs\Bannerbot\browsershot_master\src\Browsershot.php on line 63
0
verreisterNutzer  29.11.2018, 00:05
@ikinikin

Vermutlich müsste ich das mit all den folgenden Dateien noch tun. Man findet diese im namespace, welches schon importiert wurde:

namespace Spatie\Browsershot;

use Spatie\Image\Image;
use Spatie\Image\Manipulations;
use Symfony\Component\Process\Process;
use Spatie\TemporaryDirectory\TemporaryDirectory;
use Spatie\Browsershot\Exceptions\ElementNotFound;
use Spatie\Browsershot\Exceptions\CouldNotTakeBrowsershot;
use Symfony\Component\Process\Exception\ProcessFailedException;

0
verreisterNutzer  29.11.2018, 00:10
@ikinikin

Frage mich wo die auch sein sollten.... habe keinen Ordner der Spatie heisst, weder noch Image, Component oder Process.

0
ikinikin  29.11.2018, 00:21
@verreisterNutzer

Es muss nicht zwingend Ordner mit diesen Namen geben aber Dateien, die solch einen namespace haben.

0
verreisterNutzer  29.11.2018, 00:27
@ikinikin

Jetzt darf ich geschätzte 5 Pakete runterladen^^ Wäre ja zu viel gewesen, alle in eins zu packen :P

0
verreisterNutzer  29.11.2018, 00:43
@ikinikin
Fatal error: Uncaught Symfony\Component\Process\Exception\ProcessFailedException: The command "node ^"C:^\xampp^\htdocs^\Bannerbot^\browsershot_master^\src/../bin/browser.js^" ^"^{^\^"url^\^":^\^"https:^\/^\/agiger03.ga^\/Bannerbot^\/index.php^\^",^\^"action^\^":^\^"screenshot^\^",^\^"options^\^":^{^\^"type^\^":^\^"png^\^",^\^"path^\^":^\^"nerban.png^\^",^\^"args^\^":^[^],^\^"viewport^\^":^{^\^"width^\^":1180,^\^"height^\^":353^}^}^}^"" failed. Exit Code: 1(General error) Working directory: C:\xampp\htdocs\Bannerbot Output: ================ Error Output: ================ Der Befehl "node" ist entweder falsch geschrieben oder konnte nicht gefunden werden. in C:\xampp\htdocs\Bannerbot\browsershot_master\src\Browsershot.php:597 Stack trace: #0 C:\xampp\htdocs\Bannerbot\browsershot_master\src\Browsershot.php(411): Spatie\Browsershot\Browsershot->callBrowser(Array) #1 C:\xampp\htdocs\Bannerbot\shoter.php(13): Spatie\Browsershot\Browsershot->save('nerban.png') #2 {main} thrown in C:\xampp\htdocs\Bannerbot\browsershot_master\src\Browsershot.php on line 597

Und bei dem Error geh ich schlafen ;)

0
ikinikin  29.11.2018, 14:26
@verreisterNutzer

Einfach auf eine HTML Seite und die dann aufrufen, vermute ich. Oder soll das auf dem Server ausgeführt werden?

0
verreisterNutzer  29.11.2018, 14:32
@ikinikin

Hmm, ich probiere gerade eine andere Methode aus. Mal schauen, ob das funktioniert...

0
verreisterNutzer  29.11.2018, 14:34
@ikinikin

Hmm ok, hiermit:

<?php
$ch = curl_init('https://agiger03.ga/Bannerbot/index.php');
$fp = fopen('nerban.png', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

Wird einfach der Seitenquelltext als .png gespeichert...

0
ikinikin  29.11.2018, 14:36
@verreisterNutzer

Dabei wird ja auch nirgends etwas anderes versucht. Die aufgerufene Seite enthält auch kein Bild sondern HTML.

0
verreisterNutzer  29.11.2018, 14:38
@ikinikin

Naja, ich befürchte mein Problem ist, dass ich das Bild als HTML Body Hintergrundbild verwende.

Daher ist eigentlich die einzige Möglichkeit ein Screenshot der Seite, ansonsten müsste ich das Zeug alles umändern. Wenn ich das mache zeigt mir Chrome wieder ein schönes Quadrat in der Mitte an.

0
ikinikin  29.11.2018, 14:43
@verreisterNutzer

Das Problem mit dem Quadrat passiert, wenn es eine falsche Ausgabe gibt. Wenn Chrome ein Bild erwartet und etwas anderes zurück gegeben wird, passiert ein solcher Fehler. Kannst du auch sehen wenn du eine einfache PNG-Datei auf deinem PC mit beispielsweise Notepad++ änderst und ein Leerzeichen an den Anfang der Datei setzt und anschließend in Chrome öffnest erhält man ein Quadrat

0
ikinikin  29.11.2018, 14:45
@verreisterNutzer
<?php
$ch = curl_inithttps://agiger03.ga/Bannerbot/index.phpp');
$fp = fopen('nerban.png', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

Das Problem daran ist das HTML selbst. Du kannst das HTML nicht einfach als Bild speichern.

0
ikinikin  02.12.2018, 11:57
@verreisterNutzer

Hast du dein JavaScript auf deinem Server ausgeführt, auf dem du PhantomJS installiert hast? (Kommt bei dir auch eine Fehlermeldung auf GF wenn du auf meinen letzten Kommentar antworten willst?)

0
ikinikin  02.12.2018, 12:46
@verreisterNutzer

Fehlt noch eins oder evtl eine Klammer? ^^ Und was verwendest du jetzt eigentlich genau?

0
verreisterNutzer  02.12.2018, 12:52
@ikinikin

Sehe jetzt da nicht was fehlt, die Zeile darüber:

$client->getEngine()->addOption('--ignore-ssl-errors=true');

PhantomJS.

0
verreisterNutzer  02.12.2018, 14:24
@ikinikin

Ich versteh die Welt nicht mehr:

Fatal error: Uncaught Error: Class 'JonnyW\PhantomJs\DependencyInjection\ServiceContainer' not found in C:\xampp\htdocs\Bannerbot\php-phantomjs-master\src\JonnyW\PhantomJs\Client.php:103 Stack trace: #0 C:\xampp\htdocs\Bannerbot\shoter.php(6): JonnyW\PhantomJs\Client::getInstance() #1 {main} thrown in C:\xampp\htdocs\Bannerbot\php-phantomjs-master\src\JonnyW\PhantomJs\Client.php on line 103

Ich behebe einen Fehler, dann kommt der Nächste...

0
ikinikin  02.12.2018, 15:00
@verreisterNutzer

Bei mir kommen auch etliche Fehler...

Ich denke, dass die andere Lösung, bei der man das Bild mit php bearbeitet, die bessere und einfachere ist.

0
verreisterNutzer  02.12.2018, 16:19
@ikinikin

Sorry, dass es so lange dauert, mein PC macht grad harte Probleme:

Wenn ich GTA V starte bekommt Bildschirm 1 kein Signal mehr, Bildschirm 2 und 3 frieren ein. Muss PC dann immer auf die harte Art neustarten.

Ja, alle mit require.

0
ikinikin  02.12.2018, 16:24
@verreisterNutzer

Das klingt aber nicht fein :0

Ich habe es mit Composer getestet aber scheinbar benötigt man auch einige Symfony Klassen. Da hab ich dann aber aufgehört ^^. Willst du es nicht nochmal mit der anderen Methode probieren?

0
verreisterNutzer  02.12.2018, 16:31
@ikinikin

Kann ich machen, dauert halt bisschen da es grad nicht so angenehm ist an diesem PC zu arbeiten^^

0
verreisterNutzer  02.12.2018, 16:50
@ikinikin

Ich regel hier erstmal das Problem mit dem Rockstar Games Support. Der lässt mich meinen PC sowieso x Mal neustarten ;)

0
verreisterNutzer  02.12.2018, 19:02
@ikinikin

Joa, mit Hilfe von mir. Scheint so, als wäre mein Netzteil nach 6 Monaten defekt 🙄.

Ich versuch mein Glück dann mal hier weiter.

0
verreisterNutzer  02.12.2018, 19:27
@ikinikin

Microsoft Support ist schlimmer. Die können dir nicht nur nicht helfen, die sind auch angepisst.

0
ikinikin  02.12.2018, 19:30
@verreisterNutzer

Hmm.. Die haben mir mal einen Key geschenkt, da war ich dann schon zufrieden ^^. Willst du evtl Plattform switchen, falls du hierbei noch irgendwie Hilfe benötigst?

0
ikinikin  02.12.2018, 19:34
@verreisterNutzer

Wenn du willst.. Mir geht dieser Kommentieren-Fehler auf die Nerven und wir sind hier schon bei 120 Kommentaren ^^ Und idk was die GF Mods davon halten wenn man hier vom Thema abkommt.

0
verreisterNutzer  02.12.2018, 19:35
@ikinikin

120 Kommentare haben dann meinen letzten Rekord von ca. 80 überschritten...

Wie wärs denn einfach, wenn ich dich bei Problemen über Discord anschreiben könnte?

Geplant sind noch 2 Websites wo ich bestimmt Hilfe brauche bei Registrieren, Anmelden, Ticketsystem usw.

0

Gibt es denn die Datei image.png im selben Verzeichnis in dem Du die PHP-Datei abgelegt hast?

Stimmt auch die Groß-/Kleinschreibung beim Dateinamen?

Rufst Du die PHP-Datei per http auf?

Steht evtl. was im Error-Log?

Woher ich das weiß:Berufserfahrung
verreisterNutzer  28.11.2018, 20:22

Die Datei existiert (einfach mit einem anderen Namen, hab hier als Beispiel einfach image.png hingeschrieben), richtig geschrieben.

Ich rufe die Seite als localhost auf.

Fehler bekomme ich keine (apache2_errorlog), php_errorlog wird nicht gefunden.

0
threadi  28.11.2018, 20:31
@verreisterNutzer

Rufst Du die Seite per http://localhost auf und hast Du PHP installiert?

Ruf die Seite mal im Browser auf und drücke dann Strg + U - was siehst Du dann (sollte die Quellcode-Ansicht der geladenen Seite sein).

0
verreisterNutzer  28.11.2018, 20:34
@threadi

Naja, bei Chrome ist das grau (kann ich nicht machen) und beim Internet Explorer wird nur das angezeigt, der versteht die gesamte Datei nicht xD

PHP ist installiert, ja, ich mache es mit "http://localhost".

0
threadi  28.11.2018, 20:37
@verreisterNutzer

Wenn der Chrome grau anzeigte wurde nichts an den Browser ausgeliefert. Sieht so aus als wäre PHP installiert und würde lediglich durch einen Fehler an der Ausgabe gehindert werden.

Daher wäre es umso wichtiger, dass Du auch Fehlerausgaben bekommst. Anhand von diesen kannst Du herausbekommen was bei dir falsch läuft. Hier gibt es Hinweise was dazu zu tun ist:
https://andreas-bruns.com/2014/09/29/anzeigen-von-fehlermeldungen-in-php/
https://www.php-kurs.com/php-fehlermeldungen.htm

0

file_get_contents ist für ASCII Dateien nicht für BINARY.

Versuche es mal so:

$im = imagecreatefrompng(__DIR__."image.png");
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
Woher ich das weiß:Berufserfahrung – Software-Entwickler
KarlRanseierIII  28.11.2018, 20:25

Nein, file_get_contents zieht die ganze Datei (oder Teile derer) in einen String. Letzterer darf jede Art von Zeichen enthalten.

Alternativ tut es ein readfile, welches gleich in den Ausgabepuffer weiterschaufelt.

0

Da fehlt ein Slash im Pfad.

echo file_get_contents(__DIR__."/image.png");
verreisterNutzer  28.11.2018, 21:07

Hab mich von dieser Methode verabschiedet. Falls du aktuell sein willst kannst du die Diskussion von ikinikin und mir durchlesen ;)

0
verreisterNutzer  28.11.2018, 21:13
@regex9

Ich will die Datei halt für ein TS3 Banner verwenden und habe gehört, dass TS3 das als Banner identifiziert darf kein echo, print oder jegliche andere Ausgabemethode verwendet werden.

0
regex9  28.11.2018, 21:18
@verreisterNutzer

Was soll die Seite dann machen, wenn sie keinen Response liefert? Kannst du dann nicht einfach die Bildurl verwenden (deine Domain + relativer Bildpfad)?

0
verreisterNutzer  28.11.2018, 21:20
@regex9

PHP liest mit Hilfe vom TeamSpeak Framework alle Daten die ich brauche aus und soll diese dann auf das Bild drauf schreiben, TS3 soll das Bild, welches PHP dort mit einem Text verseht als Banner anzeigen.

0
verreisterNutzer  28.11.2018, 21:38
@regex9

Das Problem ist halt, dass bei mir das Bild nicht angezeigt wird. Dabei ist es egal, ob localhost oder vServer.

0
verreisterNutzer  28.11.2018, 21:43
@regex9

Kennt du vielleicht eine Methode, wie ich eine Art Screenshot dieser Website machen kann? Diesen dann als .PNG speicher kann, so kann TS3 das ohne Probleme benutzen. Dies sollte alle 60 Sekunden aktualisiert werden und die alte Datei überschrieben werden.

0
regex9  28.11.2018, 22:04
@verreisterNutzer

PHP-Screenshots kann man mit imagegrabscreen machen, nur geht das viel zu schnell, denn die Funktion kann nicht warten, bis das Dokument fertig geladen ist. Daher wäre der Weg über JavaScript eher zu wählen. Mit einer Bibliothek wie html2canvas kannst du das DOM erst auf ein Canvas zeichnen lassen und dann via toDataURL eine Bild-URL dazu erhalten.

Andernfalls gibt es sicherlich auch PHP Bibliotheken, die dir eine HTML-Seite zu einem Bild konvertieren. Die Aktualisierung im Intervall kann ein PHP Cronjob erledigen.

Zu deinem Bildanzeigeproblem antworte ich später nochmal. Den Pfad wirst du ja bereits überprüft haben.

1