Rare tekens met functie ImageCreateFromJpeg
Ik heb een probleempje.
Ik maak nu gebruik van de ImageCreateFromJpeg functie.
Dat is de code hieronder:
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
header("Content-Type: image/jpeg");
$im = ImageCreateFromJpeg("53207.jpg");
$black = ImageColorAllocate($im, 255, 255, 255);
$start_x = 10;
$start_y = 20;
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'verdana.ttf', "Test");
Imagejpeg($im, '', 100);
ImageDestroy($im);
?>
header("Content-Type: image/jpeg");
$im = ImageCreateFromJpeg("53207.jpg");
$black = ImageColorAllocate($im, 255, 255, 255);
$start_x = 10;
$start_y = 20;
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'verdana.ttf', "Test");
Imagejpeg($im, '', 100);
ImageDestroy($im);
?>
Deze code werkt perfect als ik even een test.php bestandje maak, met alleen deze code erin. Nu probeer ik deze tussen huidige code te zetten en krijg ik een hele rare tekst. Hier een voorbeeldje:
Quote:
§i8Ïúu‡úeç\ÇŽY1¼77ÑÜÿfÉþ‘ ù?ê: »+î¤vúñšú‡ã—Áø´|DÔuWÒä:‡tÑi,@\ ›KÛÞ>¸Çê;Šà´Ÿ‡ž!ðö›£ÜÙ马i÷º=¬ÿeŽ_´joú%—üzw¾°ÿ¨o¯×ÛQÎ0µrÌ5j–¯w-£džšÅù»Ý-¼¾Ry6&ž7J·ÒÉit»i¯F{?$x>Ÿ¥#êÚDsiQÜÿ³|¯7þÁ:/¿ý:õ«×5«9öi¸³¸ó
Zo gaat dat een regel of 100 door.
Kan iemand mij precies vertellen wat het probleem hier is? In het test bestandje doet hij het perfect.
Zijn er bepaalde dingen die dan niet in de huidige pagina voor mogen komen?
Ik maak in de pagina gebruik van: function en include.. Natuurlijk ook gewoon meta tags en doctype.
Mijn dank is groot,
Waarschijnlijk vergeet je de Content-Type header.
Let op: Zo kan je alleen het plaatje direct weergeven, makkelijker is hem op te slaan:
http://nl3.php.net/manual/en/function.imagejpeg.php
Dat dacht ik dus ook al dat de image als text word weergeven.
Content-Type staat recht boven het script, deze is dus niet vergeten, wel heb ik het gevoel dat deze niet werkt op het moment.
Heeft misschien iemand een beter scriptje voor dit?
Alles wat ik zoek is tekst over een image. Opslaan is niet eens nodig, alleen weergeven met tekst. Die tekst kan gewoon in het script al aangegeven worden want die is altijd hetzelfde.
Gewijzigd op 30/06/2010 12:02:13 door Allard Keij
Pim de Haan op 30/06/2010 11:47:52:
De image lijkt als tekst geïnterpreteerd te worden.
Waarschijnlijk vergeet je de Content-Type header.
Waarschijnlijk vergeet je de Content-Type header.
Die header heeft hij wel staan.
Allard Keij op 30/06/2010 11:40:22:
Deze code werkt perfect als ik even een test.php bestandje maak, met alleen deze code erin. Nu probeer ik deze tussen huidige code te zetten en krijg ik een hele rare tekst.
De cody die de afbeelding weer geeft moet in een los bestand gebruikt worden. Er mag dus geen andere output zijn.
Als je error reporting goed staat zal je ook een error krijgen op die header functie als je al output stuurt.
Quote:
gezet, en dan word de image daar ook al niet meer weergeven, maar er komt ook geen rare teksten.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Is er dan misschien een andere manier om dit in mijn code te kunnen zetten.
Hierbij de gehele pagina(let even niet op de opmaak e.d):
Quote:
<div id="mediaconent2">
<table width="741"><tr>
<td height="219"><a href="product.php?pid=&cat=&n="><center>
<img src="http://***/productimages/" height="200" width="200">
</center></a></td>
</tr>
</table>
</div>
<div id="mediaconent2">
<table width="741"><tr>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$cat = $_GET['cat'];
$teller = 0;
if(isset($_GET['cat'])){
$categorie = $_GET['cat'];
$AantalPerPagina = 6;
if(isset($_GET['n'])){
$n = $_GET['n'];
$Cijfers = true;
if(!$n) { $n = 0; } $n = intval($n+1); $a = $n - 1; $b = $n - 2; $x = $a * $AantalPerPagina;
$dbres = mysql_query("SELECT * FROM $cat ORDER BY pid LIMIT $x, $AantalPerPagina");
while($list = mysql_fetch_object($dbres))
{
$img = $list->img1;
$pid = $list->pid;
$sold = $list->verkocht;
?>
$cat = $_GET['cat'];
$teller = 0;
if(isset($_GET['cat'])){
$categorie = $_GET['cat'];
$AantalPerPagina = 6;
if(isset($_GET['n'])){
$n = $_GET['n'];
$Cijfers = true;
if(!$n) { $n = 0; } $n = intval($n+1); $a = $n - 1; $b = $n - 2; $x = $a * $AantalPerPagina;
$dbres = mysql_query("SELECT * FROM $cat ORDER BY pid LIMIT $x, $AantalPerPagina");
while($list = mysql_fetch_object($dbres))
{
$img = $list->img1;
$pid = $list->pid;
$sold = $list->verkocht;
?>
<td height="219"><a href="product.php?pid=&cat=&n="><center>
<img src="http://***/productimages/" height="200" width="200">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
header("Content-Type: image/jpeg");
$im = ImageCreateFromJpeg("53207.jpg");
$black = ImageColorAllocate($im, 255, 255, 255);
$start_x = 10;
$start_y = 20;
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'verdana.ttf', "Test");
Imagejpeg($im, '', 100);
ImageDestroy($im);
?>
header("Content-Type: image/jpeg");
$im = ImageCreateFromJpeg("53207.jpg");
$black = ImageColorAllocate($im, 255, 255, 255);
$start_x = 10;
$start_y = 20;
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'verdana.ttf', "Test");
Imagejpeg($im, '', 100);
ImageDestroy($im);
?>
</center></a></td>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
$teller = $teller + 1;
if ($teller == 3){ echo "</tr>\n<tr>";
$teller=0;
}
}
}
}
$Aantal = mysql_num_rows(mysql_query("SELECT * FROM $cat ORDER BY pid"));
function writeBladZijden()
{ if($Cijfers) {
for($i = 0; $i < $Aantal; $i+=$AantalPerPagina) {
if($Aantal > $i) {
echo("[<a href='$PHP_SELF?n=".($i/$AantalPerPagina)."'>".($i/$AantalPerPagina+1)."</a>]");
} } } }
echo"<table width=\"741\"><tr>";
if($b > -1) { echo(" <td width=\"247\"><a href='categorie.php?cat=$cat&n=$b'><center>VORIGE </center></a> </td>"); } else{echo"<td width=\"247\"> </td>";}
echo"<td width=\"247\"><a href=\"antiek.php\"><center>HOME</center></a> </td>";
if($Aantal - ($n * $AantalPerPagina) > 0) { echo("<td width=\"247\"><a href='categorie.php?cat=$cat&n=$n'><center>VOLGENDE</center></a></td>");} else{echo"<td width=\"247\"> </td>";}
echo"</table></tr>";
?>
$teller = $teller + 1;
if ($teller == 3){ echo "</tr>\n<tr>";
$teller=0;
}
}
}
}
$Aantal = mysql_num_rows(mysql_query("SELECT * FROM $cat ORDER BY pid"));
function writeBladZijden()
{ if($Cijfers) {
for($i = 0; $i < $Aantal; $i+=$AantalPerPagina) {
if($Aantal > $i) {
echo("[<a href='$PHP_SELF?n=".($i/$AantalPerPagina)."'>".($i/$AantalPerPagina+1)."</a>]");
} } } }
echo"<table width=\"741\"><tr>";
if($b > -1) { echo(" <td width=\"247\"><a href='categorie.php?cat=$cat&n=$b'><center>VORIGE </center></a> </td>"); } else{echo"<td width=\"247\"> </td>";}
echo"<td width=\"247\"><a href=\"antiek.php\"><center>HOME</center></a> </td>";
if($Aantal - ($n * $AantalPerPagina) > 0) { echo("<td width=\"247\"><a href='categorie.php?cat=$cat&n=$n'><center>VOLGENDE</center></a></td>");} else{echo"<td width=\"247\"> </td>";}
echo"</table></tr>";
?>
</tr>
</table>
</div>
Gewijzigd op 30/06/2010 12:19:00 door Allard Keij
1). header("Content-Type: image/jpeg"); zet de pagina om naar een image. De hele pagina, dus ook alle html etc. erin. Daarom doet dit het niet. Als je het op deze manier wilt doen, moet je je img in een ander bestand zetten en deze d.m.v. een <img> in je HTML zetten.
2). Je gebruikt hier en daar shorttags: <? Dit zorgt soms ook voor problemen. Het is verstandiger om gewoon <?php te gebruiken
Ook vraag ik me af waarom je zovaak van PHP naar HTML switcht.
Gewijzigd op 30/06/2010 12:14:20 door Mark L
Aha, met <img src="image.php"> dus. Eerst proberen dan vragen, sorry ;).
Bedankt! dit werkt. Ook bedankt voor alle nuttige tips!
Nu is nog wel mijn vraag, hoe krijg ik precies de juiste afbeelding? Ik heb er nu even een vaste ingezet, maar deze moet automatisch worden.
Ik maak gebruik van:
$img = $list->img1;
Maar hoe krijg ik nu die $img in image.php?
--------------------------
Klopt, zelf ben ik ook nooit helemaal tevreden met m'n code, daar probeer ik ook veel verandering in te brengen. Ik zit nogsteeds in de leerfase.
Hoe bedoel je precies in een ander bestand zetten?. Ik kan de code bijvoorbeeld in image.php zetten, maar dat d.m.v een <img> snap ik dan niet helemaal, hoe ik het bestand in verband breng met een <img> tag.
Nog een extra vraagje, is het verstandig om altijd < ? php te gebruiken i.p.v < ?,
Bedankt alvast,
Gewijzigd op 30/06/2010 12:27:49 door Allard Keij
Dus <img src="image.php?id=123" />
En in image.php: echo $_GET['id'] geeft 123
Super bedankt allemaal!
Fijn dat ik op dit forum altijd terecht kan ( en niemand een noobie zoals mij afkraakt, maar goede tips geeft ).
Thnx!
Cheers,