Bilder verkleinern mit php

I

Idefix007

Hallo zusammen,

ich habe ein Skript was Bilder dynamisch verkleinert.

<?php
// The file
$filename = 'test.jpg';
$percent = 0.5;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p, null, 100);
?>

Das funktioniert auch wunderbar, wenn ich es in eine php erstelle wo nur das drin steht. Da ich aber die $filename durch eine andere Variable, welche wiederum durch REQUEST_URI definiert ist, definieren möchte, habe ich das Skript in meine html seite eingebaut. Dann kommt jedoch als ausgabe jedoch nur ein riesiger haugen von zaheln und buchstaben, mit der fehlermeldung
Warning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\wwwroot\WEBSIDE\Download.php:6) in C:\Inetpub\wwwroot\WEBSIDE\Download.php on line 163

Aber ich hab nirgens auf der Seite noch einen header stehen... (Und die Zeile 163 ist die wo in dem Skript des oben steht der header erwähnt wird)...

Ich habe echt keine Aahnung warum das so ist. ich hoffe jemand kann mir helfen.

Lieben Gruß

Idefix
 
1) Dein Script sendet ein Header. Somit wird das als eine Datei ausgegeben.
Betrachte diese Datei einfach mal als jpeg-Grafik-Datei.
Dann musst du im Script diese Grafik als html-Tag einbinden
HTML:
<img src="meinScript.php&filename=testgrafik.jpg" />

2) Dieses Script muss mit <?php als erste Zeichen beginnen und darf vor dem header() keinerlei ausgabe haben. Kein echo etc.

Nachtrag:
Bitte, bitte den Code in Zukunft in [PHP]mein Code[/PHP] setzen
 
Zuletzt bearbeitet:
OK. Du sagst ich soll die Datei als html Tag einbinden, aber genau das geht ja nicht. Ich rufe die datei download.php?123xyz auf. Dieser Code der hinter dem ? steht wird per MySQL abfrage in einen dateinamen umgewandelt. und genau diese datei soll dann per Skript verkleinert werden. EIgentlich wollte ich das Skript ja in eine extra datei stecken und dann über <img src=xyz.php> einbinden aber das geht ja auch nicht weil in der extra datei steht mir ja die id die hinter dem ? steht ja nicht zur verfügung weil die datei ja dann nicht direkt aufgerufen wird. Das ist bei mir so geregelt:

PHP:
$url= $_SERVER['REQUEST_URI'] ;
$array = parse_url($url);

$id= $array[query];


$abfrage = "SELECT dateiname FROM abc WHERE dateiid = '$id'";
$result = mysql_query($abfrage);
$array = mysql_fetch_assoc($result);


$filename= ($array['dateiname']);

Aber trotzdem danke für deine Hilfe!
 
Du kannst die Grafik ja auch mit der id aufrufen und in dem Grafikscript den DB-Zugriff machen. Dann hast du <img src="grfik.php?id=4">
 
Nochmal zum verständnis:

Du meinst ich soll die db abfrage in diese extra datei mit dem skript tun. aber woher weiß den das grafikskript die id, weil die <img src"grafik.php?id=11" steht doch nur in der "haupt" datei (zb index.php), voher weiß denn das grafikskript in grafik.php, was bei der index.php hinter dem Fragezeichen steht?

Irgendwie steh ich auf dem Schlauch :(
 
Weil du die grafik.php ja mit dem GET-Parameter id aufrufst.
<img src"grafik.php?id=11">

Ich hab das so ähnlich auch schon eingesetzt. Hier mal ein Besipiel (.png wird durch eine Einstellung in der .htaccess-Datei als .php behandelt)
http://gfpb.yaslaw.info/web/generic/text.png?text=hallo
Und heir siehst du bei all den komischen Schriftbildern den aufruf im img-Tag
http://gfpb.yaslaw.info/index.php

Und da noch ein Beispielcode einer solchen Image-Grafik-Php-Datei
http://wiki.yaslaw.info/wikka/PhpTextGrafik
 
Zuletzt bearbeitet:
aber jetzt hab ich dopch noch ein kleines Problem und zwar wegen dem img src:

wie muss ich das denn genau schreiben?
bei
PHP:
echo "<img src ="grafik.php?'$id'">";

kommt immer ein blöder prase error.
 
Probier mal folgendes:

PHP:
echo "<img src=\"grafik.php?id=".$id."\">";
Dann müsste folgendes ausgegeben werden (wenn $id=1):
Code:
<img src="grafik.php?id=1">
 
So, jetzt habe ich alle Fehler behoben, es geht perfekt! Vielen Dank an yaslaw, und an ComFreek!
 
Zuletzt bearbeitet von einem Moderator:
Zurück