Jump to content

Dynamisch Plaatje maken


Recommended Posts

Geplaatst: (bewerkt)

Hallo,

Ik heb zeg maar een klein scriptje, soortvan, en die werkt dat ik meerdere plaatjes maak, en die met en scriptje laat wisselen, en dan via htaccess wilde ik die naar PNG converteren. Maar nu word de afbeelding niet weergegeven in IPB, SMF etc. dus hoe kan ik het zo maken dat het wel word weergegeven?

Dit is de code:

<?php 
$images = array('banner/1.png', 'banner/2.png');
$alt = array('BeaT DowN - 24/7',  'BeaT DowN - The best place to be!');
$loop = rand(0,sizeof($images) - 1);
?>

<html><img src="<?php echo $images[$loop]; ?>" alt="" /></html>

Bewerkt: door Zamg0d1
Geplaatst:

Als je het via htaccess als png wilt kunnen tonen, moet je er wel voor zorgen dat de output die je genereerd ook echt een PNG plaatje is. Op dit moment genereert jouw script HTML code.

Voorbeeld van genereren van een png plaatje vanuit php:

<?php
 $pict = imagecreatefrompng("input.png");
 header("Content-type: image/png");
 ImagePNG($pict);
 ImageDestroy($pict);
?>

De eerste laad een png plaatje in vanaf disk, en slaat die op als een "image" in variable $pict.

De tweede regel genereerd de HTTP headers, die aangeven dat het om een png plaatje gaat.

De derde regel stuurt de inhoud van $pict als PNG naar de output.

En de laatste regel verwijderd de variabele $pict weer.

Ik denk dat je op basis hiervan er wel uit zou moeten komen.

Succes

Geplaatst: (bewerkt)

Maar, moet ik dus als input doen http://bd.gaming-freak.nl/banner.png ? Als ik dat doe krijg ik errors.. En als ik een PNG als input moet invoeren, hoe doe ik dat dan? Ik heb nog geen PNG toch? Dus hoe doe ik dat dan?

Warning: imagecreatefrompng() [function.imagecreatefrompng]: 'http://bd.gaming-freak.nl/banner.png' is not a valid PNG file in /usr/home/deb15335/domains/gaming-freak.nl/public_html/bd/banner.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/deb15335/domains/gaming-freak.nl/public_html/bd/banner.php:8) in /usr/home/deb15335/domains/gaming-freak.nl/public_html/bd/banner.php on line 9

Warning: imagepng(): supplied argument is not a valid Image resource in /usr/home/deb15335/domains/gaming-freak.nl/public_html/bd/banner.php on line 10

Warning: imagedestroy(): supplied argument is not a valid Image resource in /usr/home/deb15335/domains/gaming-freak.nl/public_html/bd/banner.php on line 11

Bewerkt: door Zamg0d1
Geplaatst:

Met "imagecreatefrompng()", kun je alleen plaatjes inladen vanaf de schijf van je server. Je kunt dus geen URL gebruiken om een plaatje van internet te laden.

In mijn voorbeeld, moet je dus een "input.png" plaatje hebben staan in dezelfde folder als waarin de php file staat.

Geplaatst: (bewerkt)
Met "imagecreatefrompng()", kun je alleen plaatjes inladen vanaf de schijf van je server. Je kunt dus geen URL gebruiken om een plaatje van internet te laden.

In mijn voorbeeld, moet je dus een "input.png" plaatje hebben staan in dezelfde folder als waarin de php file staat.

Mag dit ook gewoon een lege afbeelding zijn?

EDIT: Dit script geeft nu een error....

<?php 
$images = array('banner/1.png', 'banner/2.png');
$alt = array('BeaT DowN - 24/7',  'BeaT DowN - The best place to be!', 'BeaT DowN - Kom naar 24/7!');
$loop = rand(0,sizeof($images) - 1);
?>

<?php
 $pict = imagecreatefrompng("input.png");
 header("Content-type: image/png");
 ImagePNG($pict);
 ImageDestroy($pict);
?>

<html><img src="<?php echo $images[$loop]; ?>" alt="" /></html>

Alles is goed, maar ik krijg een error... Warning: Cannot modify header information - headers already sent by (output started at /usr/home/deb15335/domains/gaming-freak.nl/public_html/bd/banner.php:8) in /usr/home/deb15335/domains/gaming-freak.nl/public_html/bd/banner.php on line 10 - Dit is de header die ik in de code van jou eb staan. Zelf snap ik er even niks meer van :N

Bewerkt: door Zamg0d1
Geplaatst:

Die error betekent dat je al output hebt weggeschreven voordat je header() aanroept. Dit zijn waarschijnlijk die 2 newlines boven <?php, die moeten weg:

<?php 
$images = array('banner/1.png', 'banner/2.png');
$alt = array('BeaT DowN - 24/7',  'BeaT DowN - The best place to be!', 'BeaT DowN - Kom naar 24/7!');
$loop = rand(0,sizeof($images) - 1);

 //$pict = imagecreatefrompng("input.png");
 $pict = imagecreatefrompng($images[$loop]);
 header("Content-type: image/png");
 ImagePNG($pict);
 ImageDestroy($pict);
?>

ik heb ook even de $pict nu ingesteld zoals die hoort uitgaande van het script daarboven

ook heb ik de html weggehaald... in een png-plaatje hoort geen html he ;)

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...