[php] create image probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
Ik wil images creeeren na opvraag uit een mysql database. Ik heb eerst onderstaande code gebruikt om te kijken of het werkt. Dat gaat goed!
PHP:
1
2
3
4
5
6
7
8
    header("Content-type: image/pjpeg");
    $string = 'hallo';
    $im     = imagecreatefromjpeg("images/test.jpg");
    $black = imagecolorallocate($im, 0, 0, 0);
    $px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 9, $string, $black);
    imagejpeg($im);
    imagedestroy($im);

Maar wanneer ik deze nu in een ander stuk code (zie hieronder) zet, omdat ik meerdere images wil creeeren die uit de database komen krijg ik alleen rare code te zien.

op de server is GD lib 2.0 or higher aanwezig
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$Query = "  SELECT id, naam
            FROM cms_sport
            WHERE id_cms_categorie = '1'
            ORDER BY naam";
$Result = OpenQuery($Query, $Connection);
for ($index = 0; $index < numrows($Result); $index++){
    $row = FetchRow($Result);
    $idsport    = $row["id"];
    $naam       = $row["naam"];

    header("Content-type: image/pjpeg");
    $string = $naam;
    $im     = imagecreatefromjpeg("images/test.jpg");
    $black = imagecolorallocate($im, 0, 0, 0);
    $px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 9, $string, $black);
    imagejpeg($im);
    imagedestroy($im);

}

Ik moet erbij zeggen dat ik niet zoveel ervaring met php heb...dus misschien is het wel iets heel stoms. Ik heb de search gebruikt, maar ik kon geen goed antwoord vinden op dit probleem.

Wie kan mij vertellen wat ik verkeerd doe?

Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:28
In je for-loop gooi je er meerdere afbeeldingen uit, en geef je ook meerdere headers mee... dat kan natuurlijk nooit goed gaan!

Als je een rijtje afbeeldingen in een pagina wilt hebben kan je het beste afbeeldingen aanroepen met bijv. [img]"maakafbeelding.php?soort=xxx"[/img]; in de maakafbeelding.php zet je vervolgens een code die a.h.v. $_GET['soort'] één plaatje uitspuugt. In je bronbestand roep je vervolgens meerdere keren de IMG-tag aan.

Acties:
  • 0 Henk 'm!

  • bartware
  • Registratie: Juni 2001
  • Laatst online: 25-03-2023

bartware

@jabber.org

Ik loop zelf altijd op deze manier door een resultset:
PHP:
1
2
3
4
    while ($line = mysql_fetch_array($result)) {
        $name = $line["name"]; 
        rest van je code......
    }

Dat zou je eens kunnen proberen.

Iets anders: je noemt in je loop elk plaatje 'plaatje.jpg'.
Dat kan natuurlijk ook nooit goed gaan. Geef ze allemaal een unieke naam.

Succes!

Heb ik me begrepen?
Cycle Vision 2020: 17-20 juli Sportpark Sloten & Wheelerplanet Spaarnwoude


Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
sjroorda schreef op 24 March 2003 @ 14:25:
In je for-loop gooi je er meerdere afbeeldingen uit, en geef je ook meerdere headers mee... dat kan natuurlijk nooit goed gaan!

Als je een rijtje afbeeldingen in een pagina wilt hebben kan je het beste afbeeldingen aanroepen met bijv. [img]"maakafbeelding.php?soort=xxx"[/img]; in de maakafbeelding.php zet je vervolgens een code die a.h.v. $_GET['soort'] één plaatje uitspuugt. In je bronbestand roep je vervolgens meerdere keren de IMG-tag aan.
Je hebt me een stuk verder geholpen...het creeeren van de images gaat nu wel goed, maar ik krijg ook nog steeds een zooi code erbij...volgens mij is dit de code van een image. Hoe krijg ik die eruit?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$Query = "  SELECT id, naam
            FROM cms_sport
            WHERE id_cms_categorie = '1'
            ORDER BY naam";
$Result = OpenQuery($Query, $Connection);
for ($index = 0; $index < numrows($Result); $index++){
    $row = FetchRow($Result);
    $idsport    = $row["id"];
    $naam       = $row["naam"];
    $string = $_GET['soort'];
    $im     = imagecreatefromjpeg("images/test.jpg");
    $black = imagecolorallocate($im, 0, 0, 0);
    $px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 9, $string, $black);
    imagejpeg($im);
    imagedestroy($im); 

    echo ' [img]"test.php?soort='.$naam.'"[/img]'.$CrLf;
}

Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:28
index.html:
code:
1
2
3
4
5
6
7
8
9
<html>
  ...
  <body>
    [img]"afbeelding.php?id=1"><br>
[/img]<br>
    [img]"afbeelding.php?id=3"><br>
[/img]<br>
  </body>
</html>


afbeelding.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$Query = "SELECT id, naam
              FROM cms_sport
              WHERE id_cms_categorie = '1'
              AND id = '".$_GET['id']."'
              ORDER BY naam";
$Result = OpenQuery($Query, $Connection);
// Je krijgt maar een result vanwege de toegevoegde 'AND id = ...'
    $row = FetchRow($Result);
    $idsport     = $row["id"];
    $naam         = $row["naam"];
    $string = $_GET['soort'];
    $im     = imagecreatefromjpeg("images/test.jpg");
    $black = imagecolorallocate($im, 0, 0, 0);
    $px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 9, $string, $black);
    imagejpeg($im);
    imagedestroy($im);
}

Je moet dus wel op de goede plaats <img ...> neerzetten ;)

[ Voor 18% gewijzigd door sjroorda op 24-03-2003 14:42 ]


Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
ik ben er uit....ik haalde twee codes door elkaar... Bedankt i.i.g.

Acties:
  • 0 Henk 'm!

Verwijderd

sjroorda schreef op 24 maart 2003 @ 14:41:
index.html:
code:
1
...


afbeelding.php:
PHP:
1
...

Je moet dus wel op de goede plaats <img ...> neerzetten ;)
En vergeet dan je content-type header niet... Die mis ik in je PHP code

Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
Verwijderd schreef op 24 maart 2003 @ 14:49:
[...]

En vergeet dan je content-type header niet... Die mis ik in je PHP code
klopt, maar het werkt inmiddels. Bedankt!

Heb het nu als volgt gedaan:

bestand.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

$Query = "  SELECT id, naam
            FROM cms_sport
            WHERE id_cms_categorie = '1'
            ORDER BY naam";
$Result = OpenQuery($Query, $Connection);
for ($index = 0; $index < numrows($Result); $index++){
    $row = FetchRow($Result);
    $idsport    = $row["id"];
    $naam       = $row["naam"];


    echo ' [img]"test.php?soort='.$naam.'">'.$CrLf;
    }

?[/img]

test.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php

    #header("Content-type: image/pjpeg");   //staat in bestand.php 
    $string = $_GET['soort'];
    $im     = imagecreatefromjpeg("images/test.jpg");
    $black = imagecolorallocate($im, 0, 0, 0);
    $px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 9, $string, $black);
    imagejpeg($im);
    imagedestroy($im);

?>

[ Voor 65% gewijzigd door Mitsah op 24-03-2003 14:57 ]

Pagina: 1