Probleem met GD Library (Opgelost)
Jero3n - 08/04/2007 14:02
PHP interesse
ik heb deze code:
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
}
function gaussian_blur($id, $times) {
$i="0";
While ($i<=$times) {
imagefilter($image[0], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
}
function showimg($id) {
imagePNG($image[$id]);
}
newimg(0, 500, 500);
gaussian_blur(0, 5);
echo showimg(0);
?>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
}
function gaussian_blur( $id , $times ) {
$i = "0" ;
While ( $i <= $times ) {
imagefilter( $image [ 0 ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
}
function showimg( $id ) {
imagePNG( $image [ $id ] ) ;
}
newimg( 0 , 500 , 500 ) ;
gaussian_blur( 0 , 5 ) ;
?>
als ik dit uitvoer, krijg ik dit:
Citaat:
Parse error: syntax error, unexpected $end in C:Xamppxampphtdocsindex.php on line 31
regel 31 is de regel met ?>
maar wat is daar fout aan?
ik hoop dat iemand me kan helpen
26 antwoorden
Gesponsorde links
Dark_Paul - 08/04/2007 14:20 (laatste wijziging 08/04/2007 14:22)
PHP ver gevorderde
Goed kijken he...
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
}
function gaussian_blur($id, $times) {
$i="0";
While ($i<=$times) {
imagefilter($image[0], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
}
function showimg($id) {
imagePNG($image[$id]);
}
newimg(0, 500, 500);
gaussian_blur(0, 5);
echo showimg(0);
?>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
}
function gaussian_blur( $id , $times ) {
$i = "0" ;
While ( $i <= $times ) {
imagefilter( $image [ 0 ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
}
function showimg( $id ) {
imagePNG( $image [ $id ] ) ;
}
newimg( 0 , 500 , 500 ) ;
gaussian_blur( 0 , 5 ) ;
?>
Daarom is het dus handig om in te springen dmv. tabs.
Edit:
$i="0"; hoeft niet met quotes, omdat $i een int is, geen string. Je kan dus gewoon '$i=0;' doen.
DenMette - 08/04/2007 14:24 (laatste wijziging 08/04/2007 14:26)
PHP gevorderde
voor je wat tijd te besparen je bent ergens een } vergeten op lijn 23
en zoals Dark_Paul zegt werk met TABS of inspringing je kan dat ook doen met een spatie
Jero3n - 08/04/2007 14:28
PHP interesse
dom van me, ik had de funtie gaussian_blur niet gesloten...
maar nu heb ik het naar dit veranderd:
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
}
function gaussian_blur($id, $times) {
$i=0;
While ($i<=$times) {
imagefilter($image[$id], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
}
}
function showimg($id) {
imagePNG($image[$id]);
}
newimg(0, 500, 500);
gaussian_blur(0, 5);
echo showimg(0);
?>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
}
function gaussian_blur( $id , $times ) {
$i = 0 ;
While ( $i <= $times ) {
imagefilter( $image [ $id ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
}
}
function showimg( $id ) {
imagePNG( $image [ $id ] ) ;
}
newimg( 0 , 500 , 500 ) ;
gaussian_blur( 0 , 5 ) ;
?>
en dan geeft ie dit:
Citaat:
<br />
<b>Warning</b>: imagefilter() expects parameter 1 to be resource, null given in <b>C:Xamppxampphtdocsindex.php</b> on line <b>20</b><br />
<br />
<b>Warning</b>: imagefilter() expects parameter 1 to be resource, null given in <b>C:Xamppxampphtdocsindex.php</b> on line <b>20</b><br />
<br />
<b>Warning</b>: imagefilter() expects parameter 1 to be resource, null given in <b>C:Xamppxampphtdocsindex.php</b> on line <b>20</b><br />
<br />
<b>Warning</b>: imagefilter() expects parameter 1 to be resource, null given in <b>C:Xamppxampphtdocsindex.php</b> on line <b>20</b><br />
<br />
<b>Warning</b>: imagefilter() expects parameter 1 to be resource, null given in <b>C:Xamppxampphtdocsindex.php</b> on line <b>20</b><br />
<br />
<b>Warning</b>: imagefilter() expects parameter 1 to be resource, null given in <b>C:Xamppxampphtdocsindex.php</b> on line <b>20</b><br />
<br />
<b>Warning</b>: imagepng(): supplied argument is not a valid Image resource in <b>C:Xamppxampphtdocsindex.php</b> on line <b>26</b><br />
:s
Jero3n - 08/04/2007 14:33 (laatste wijziging 08/04/2007 14:37)
PHP interesse
Dat kan niet, want eerst had ik wat anders, ook met $image[$id] en toen werkte het wel...
EDIT:
Bijvoorbeeld dit werkt gewoon:
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
imagePNG($image[$id]);
imagedestroy($image[$id]);
}
echo newimg(0, 500, 500);
?>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
imagePNG( $image [ $id ] ) ;
imagedestroy( $image [ $id ] ) ;
}
echo newimg
( 0 , 500 , 500 ) ; ?>
Dark_Paul - 08/04/2007 14:42
PHP ver gevorderde
Als je $image[$id] in de andere functies ook wilt gebruiken, moet je er een global van maken.
Anders kan je 'm alleen in de functie newimg() gebruiken, daar maak je de var ook aan.
Jero3n - 08/04/2007 14:43
PHP interesse
Sorry, ik werk nog niet zo lang met php, dus wat is een global??
:$
mesynthetix - 08/04/2007 14:50 (laatste wijziging 08/04/2007 14:52)
Nieuw lid
Gewoon de functie in dit veranderen:
<?php // voor de kleurtjes
function gaussian_blur($id, $times) {
// zorgt ervoor dat $image ook bruikbaar wordt in deze functie
global $image;
$i=0;
While ($i<=$times) {
imagefilter($image[$id], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
}
}
<?php // voor de kleurtjes
function gaussian_blur( $id , $times ) {
// zorgt ervoor dat $image ook bruikbaar wordt in deze functie
$i = 0 ;
While ( $i <= $times ) {
imagefilter( $image [ $id ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
}
}
Dan moet je dat ook in die newimg functie toepassen (anders werkt het nog niet):
<?php // voor de kleurtjes
function newimg($id, $width, $height)
{
global $image;
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
imagePNG($image[$id]);
imagedestroy($image[$id]);
}
echo newimg(0, 500, 500);
<?php // voor de kleurtjes
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
imagePNG( $image [ $id ] ) ;
imagedestroy( $image [ $id ] ) ;
}
echo newimg
( 0 , 500 , 500 ) ;
Jero3n - 08/04/2007 14:54 (laatste wijziging 08/04/2007 15:54)
PHP interesse
oke, ik had wat doms gedaan, maarja, dat heb ik nu veranderd.
maar nu heb ik nog een vraagje: hoe kan ik nou die blur en die colorize toepassen?
ik heb nu dit:
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
imagePNG($image[$id]);
}
function gaussian_blur($id, $times) {
global $image;
$i=0;
While ($i<=$times) {
imagefilter($image[$id], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
}
}
function colorize($id, $red, $green, $blue) {
global $image;
imagefilter($image[$id], IMG_FILTER_COLORIZE, $red, $green, $blue);
}
function showimg($id) {
imagePNG($image[$id]);
}
global $image;
newimg(0, 500, 500);
colorize(0, 0, 255, 0);
echo showimg(0);
imagedestroy($image[$id]);
?>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
imagePNG( $image [ $id ] ) ;
}
function gaussian_blur( $id , $times ) {
$i = 0 ;
While ( $i <= $times ) {
imagefilter( $image [ $id ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
}
}
function colorize( $id , $red , $green , $blue ) {
imagefilter( $image [ $id ] , IMG_FILTER_COLORIZE, $red , $green , $blue ) ;
}
function showimg( $id ) {
imagePNG( $image [ $id ] ) ;
}
newimg( 0 , 500 , 500 ) ;
colorize( 0 , 0 , 255 , 0 ) ;
imagedestroy( $image [ $id ] ) ;
?>
wil iemand me plz helpen?
Dark_Paul - 08/04/2007 17:14
PHP ver gevorderde
Dan moet je returnen ipv outputten in je functies.
Jero3n - 09/04/2007 09:43 (laatste wijziging 09/04/2007 09:58)
PHP interesse
moet ik dan doen:
return $image[$id] ?
EDIT:
dat zou dan zo worden:
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
ImagePNG($image[$id]);
}
function gaussian_blur($id, $times) {
global $image;
$i=0;
While ($i<=$times) {
imagefilter($image[$id], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
return $image[$id];
}
}
function colorize($id, $red, $green, $blue) {
global $image;
imagefilter($image[$id], IMG_FILTER_COLORIZE, $red, $green, $blue);
return $image[$id];
}
global $image;
echo newimg(0, 500, 500);
echo colorize(0, 0, 255, 0);
imagedestroy($image[$id]);
?>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
ImagePNG( $image [ $id ] ) ;
}
function gaussian_blur( $id , $times ) {
$i = 0 ;
While ( $i <= $times ) {
imagefilter( $image [ $id ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
return $image [ $id ] ;
}
}
function colorize( $id , $red , $green , $blue ) {
imagefilter( $image [ $id ] , IMG_FILTER_COLORIZE, $red , $green , $blue ) ;
return $image [ $id ] ;
}
echo newimg
( 0 , 500 , 500 ) ; echo colorize
( 0 , 0 , 255 , 0 ) ;
imagedestroy( $image [ $id ] ) ;
?>
dat geeft een zwart vierkant, dus nog steeds zonder colorize...
Dark_Paul - 09/04/2007 10:08
PHP ver gevorderde
Ik ben niet zo handig met GD, maar misschien werkt dit:
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
return $image[$id];
}
function gaussian_blur($id, $times) {
global $image;
$i=0;
While ($i<=$times) {
imagefilter($image[$id], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
return $image[$id];
}
}
function colorize($id, $red, $green, $blue) {
global $image;
imagefilter($image[$id], IMG_FILTER_COLORIZE, $red, $green, $blue);
return $image[$id];
}
function create($img) {
ImagePNG($img);
imagedestroy($img);
}
$img = newimg(0, 500, 500);
$img = colorize(0, 0, 255, 0);
echo $image[$id];
?>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
return $image [ $id ] ;
}
function gaussian_blur( $id , $times ) {
$i = 0 ;
While ( $i <= $times ) {
imagefilter( $image [ $id ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
return $image [ $id ] ;
}
}
function colorize( $id , $red , $green , $blue ) {
imagefilter( $image [ $id ] , IMG_FILTER_COLORIZE, $red , $green , $blue ) ;
return $image [ $id ] ;
}
function create( $img ) {
ImagePNG( $img ) ;
imagedestroy( $img ) ;
}
$img = newimg( 0 , 500 , 500 ) ;
$img = colorize( 0 , 0 , 255 , 0 ) ;
?>
Jero3n - 09/04/2007 10:25
PHP interesse
ten eerste:
create roep je niet aan, dus die doet niets...
maar verder krijg ik dit als ik die open:
Citaat:
<br />
<b>Warning</b>: imagefilter() expects parameter 1 to be resource, null given in <b>C:Xamppxampphtdocsindex.php</b> on line <b>34</b><br />
:s
Dark_Paul - 09/04/2007 11:09
PHP ver gevorderde
Owjah, create ben ik vergeten ><. Maar dat kan je zelf ook nog wel aanroepen, piece of cake.
Zet weer eens 'global $image' boven $img = ...
Jero3n - 09/04/2007 14:06 (laatste wijziging 09/04/2007 14:07)
PHP interesse
ik heb het nu iets veranderd, nl. dat er een knop komt dat als je er op klikt dat hij de colorize uitvoert.
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
ImagePNG($image[$id]);
imagedestroy($image[$id]);
return $image[$id];
}
function gaussian_blur($id, $times) {
global $image;
$i=0;
While ($i<=$times) {
imagefilter($image[$id], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
return $image[$id];
}
}
function colorize($id, $red, $green, $blue) {
global $image;
imagefilter($image[$id], IMG_FILTER_COLORIZE, $red, $green, $blue);
return $image[$id];
}
function create() {
ImagePNG($img);
imagedestroy($img);
}
global $image;
$img = newimg(0, 500, 500);
$make = create();
echo $image[$id];
?>
<html>
<head>
<title>Test!</title>
</head>
<body>
<form name="form" method="post" action="">
<input type="button" name="colorize_knop" value="Colorize" onclick="<? $img = colorize(0, 0, 255, 0); ?>">
</form>
</body></html>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
ImagePNG( $image [ $id ] ) ;
imagedestroy( $image [ $id ] ) ;
return $image [ $id ] ;
}
function gaussian_blur( $id , $times ) {
$i = 0 ;
While ( $i <= $times ) {
imagefilter( $image [ $id ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
return $image [ $id ] ;
}
}
function colorize( $id , $red , $green , $blue ) {
imagefilter( $image [ $id ] , IMG_FILTER_COLORIZE, $red , $green , $blue ) ;
return $image [ $id ] ;
}
function create( ) {
ImagePNG( $img ) ;
imagedestroy( $img ) ;
}
$img = newimg( 0 , 500 , 500 ) ;
$make = create( ) ;
?>
<html>
<head>
<title>Test!</title>
</head>
<body>
<form name="form" method="post" action="">
<input type="button" name="colorize_knop" value="Colorize" onclick="<? $img = colorize( 0 , 0 , 255 , 0 ) ; ?> ">
</form>
</body></html>
maar nu zie je die knop niet eens! :S
en ik heb het eerst ook zonder die knop gedaan, dus er alleen global $image en $make = create() aan toegevoegt, en dat gaf ook fouten...
Dark_Paul - 09/04/2007 14:16 (laatste wijziging 09/04/2007 14:17)
PHP ver gevorderde
Hoe vaak moet dit nog gezegd worden?!
PHP IS SERVERSIDE!!! Je kan dus geen CLIENT-SIDE acties uitvoeren.
Als jij met een klik op de knop een PHP-functie aan wilt roepen, zal je met AJAX aan de gang moeten.
Edit:
kijk ook even mijn create() functie, die vraagt een parameter.
Jij moet dus $img opgeven als parameter.
Zo dus:
$img = newimg(parameters);
$img = colorize(parameters);
echo create($img);
Dan wordt de afbeelding gemaakt uit de meegegeven waarde van $img.
Jero3n - 09/04/2007 14:28 (laatste wijziging 09/04/2007 14:31)
PHP interesse
maar hoe kan ik dan toch zorgen dat als ik op de knop druk hij dat doet?
misschien dat als ik dat in een ander bestand zet, en dan zet ik als action: colorize.php.
maar dat is ook zo omslachtig.
moet ik voor elke filter een ander bestand aanmaken..
P.S jij bedoeld zeker zo:
<?php
function newimg($id, $width, $height)
{
header("content-type: image/png");
$image[$id] = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image[$id], 255, 255, 255);
$black = ImageColorAllocate($image[$id], 0, 0, 0);
ImageLine($image[$id], 0, 0, $width, 0, $black);
ImageLine($image[$id], 0, $height-1, $width, $height-1, $black);
ImageLine($image[$id], 0, 0, 0, $height-1, $black);
ImageLine($image[$id], $width-1, 0, $width-1, $height-1, $black);
ImagePNG($image[$id]);
return $image[$id];
}
function gaussian_blur($id, $times) {
global $image;
$i=0;
While ($i<=$times) {
imagefilter($image[$id], IMG_FILTER_GAUSSIAN_BLUR);
$i++;
return $image[$id];
}
}
function colorize($id, $red, $green, $blue) {
global $image;
imagefilter($image[$id], IMG_FILTER_COLORIZE, $red, $green, $blue);
return $image[$id];
}
function create($img) {
ImagePNG($img);
imagedestroy($img);
}
global $image;
$img = newimg(0, 500, 500);
$img = colorize(0, 0, 255, 0);
echo create($img);
?>
<?php
function newimg( $id , $width , $height )
{
header ( "content-type: image/png" ) ; $image [ $id ] = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image [ $id ] , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image [ $id ] , 0 , 0 , 0 ) ;
ImageLine( $image [ $id ] , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image [ $id ] , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image [ $id ] , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
ImagePNG( $image [ $id ] ) ;
return $image [ $id ] ;
}
function gaussian_blur( $id , $times ) {
$i = 0 ;
While ( $i <= $times ) {
imagefilter( $image [ $id ] , IMG_FILTER_GAUSSIAN_BLUR) ;
$i ++;
return $image [ $id ] ;
}
}
function colorize( $id , $red , $green , $blue ) {
imagefilter( $image [ $id ] , IMG_FILTER_COLORIZE, $red , $green , $blue ) ;
return $image [ $id ] ;
}
function create( $img ) {
ImagePNG( $img ) ;
imagedestroy( $img ) ;
}
$img = newimg( 0 , 500 , 500 ) ;
$img = colorize( 0 , 0 , 255 , 0 ) ;
?>
dat geeft ook een zwart vierkant, omdat ik als in newimg() imagePNG doe...
en als ik dat weg haal, geeft ie dit:
Citaat:
<br />
<b>Warning</b>: imagefilter() expects parameter 1 to be resource, null given in <b>C:Xamppxampphtdocsindex.php</b> on line <b>34</b><br />
<br />
<b>Warning</b>: imagepng(): supplied argument is not a valid Image resource in <b>C:Xamppxampphtdocsindex.php</b> on line <b>40</b><br />
<br />
<b>Warning</b>: imagedestroy(): supplied argument is not a valid Image resource in <b>C:Xamppxampphtdocsindex.php</b> on line <b>41</b><br />
dan heb ik dus alleen de regel met ImagePNG($image[$id]) bij de newimg() function weg gehaalt
Dark_Paul - 09/04/2007 14:37 (laatste wijziging 09/04/2007 14:37)
PHP ver gevorderde
Je moet in newimg() ook geen ImagePNG doen, dan wordt de afbeelding 'gedrukt' om het zo maar te noemen.
Het idee was om met newimg() de basis van de afbeelding te leggen en die returnen, vervolgens met de functies van jou effecten eroverheen te zetten, en dan met create() de afbeelding 'drukken'.
Jero3n - 09/04/2007 14:42
PHP interesse
dat is het probleem juist.
zoals ik net al zei, als ik ImagePNG($image[$id]) weghaal, dus 'm niet 'druk', krijgt ik die foutmeldingen van m'n vorige post (dat wat ik heb gequote)
Dark_Paul - 09/04/2007 15:00 (laatste wijziging 09/04/2007 15:04)
PHP ver gevorderde
Volgens mij zat je onnodig moeilijk te doen met die globals en arrays.
<?php
header("content-type: image/png");
function newimg($width, $height) {
$image = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
ImageLine($image, 0, 0, $width, 0, $black);
ImageLine($image, 0, $height-1, $width, $height-1, $black);
ImageLine($image, 0, 0, 0, $height-1, $black);
ImageLine($image, $width-1, 0, $width-1, $height-1, $black);
return $image;
}
function gaussian_blur($img, $times) {
$i=0;
for ($i=0; $i < $times; $i++){
$image = imagefilter($img, IMG_FILTER_GAUSSIAN_BLUR);
}
return $image
}
function colorize($img, $red, $green, $blue) {
$image = imagefilter($img, IMG_FILTER_COLORIZE, $red, $green, $blue);
return $image;
}
function create($img) {
ImagePNG($img);
imagedestroy($img);
}
$img = newimg(0, 500, 500);
$img = colorize($img, 0, 255, 0);
echo create($img);
?>
<?php
header ( "content-type: image/png" ) ;
function newimg( $width , $height ) {
$image = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image , 0 , 0 , 0 ) ;
ImageLine( $image , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
return $image ;
}
function gaussian_blur( $img , $times ) {
$i = 0 ;
for ( $i = 0 ; $i < $times ; $i ++ ) {
$image = imagefilter( $img , IMG_FILTER_GAUSSIAN_BLUR) ;
}
return $image
}
function colorize( $img , $red , $green , $blue ) {
$image = imagefilter( $img , IMG_FILTER_COLORIZE, $red , $green , $blue ) ;
return $image ;
}
function create( $img ) {
ImagePNG( $img ) ;
imagedestroy( $img ) ;
}
$img = newimg( 0 , 500 , 500 ) ;
$img = colorize( $img , 0 , 255 , 0 ) ;
?>
Niet getest..
Edit: je moet een return nooit IN een while zetten, maar altijd aan het einde van een functie.. Na de return stopt de functie namelijk.
Edit2: ik heb nog wat dingen aangepast, niet getest.
Jero3n - 09/04/2007 15:24 (laatste wijziging 09/04/2007 16:35)
PHP interesse
Citaat:
Parse error: syntax error, unexpected '}' in C:Xamppxampphtdocsindex.php on line 23
wat is er nu weer fout?
Dark_Paul - 09/04/2007 17:20 (laatste wijziging 09/04/2007 17:21)
PHP ver gevorderde
Een parse-error, goed kijken dus.. Wat zegt de error?
Als je goed kijkt, zie je dat ik op lijn 22 een ; ben vergeten. Dit is standaard debuggen en moet je zelf dus ook kunnen als je wilt gaan PHP'en.
JBke - 09/04/2007 17:23
PHP gevorderde
wil niet zeggen dat de fout zich op regel 31 bevind maar als je bvb een ; vergeten bent kan het zijn dat het zich pas resulteert in regel 31.
Grtz.
Jero3n - 09/04/2007 17:26 (laatste wijziging 10/04/2007 07:20)
PHP interesse
k, dan wordt het dit
<?php
header("content-type: image/png");
function newimg($id, $width, $height) {
$image = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
ImageLine($image, 0, 0, $width, 0, $black);
ImageLine($image, 0, $height-1, $width, $height-1, $black);
ImageLine($image, 0, 0, 0, $height-1, $black);
ImageLine($image, $width-1, 0, $width-1, $height-1, $black);
return $image;
}
function gaussian_blur($img, $times) {
$i=0;
for ($i=0; $i < $times; $i++){
$image = imagefilter($img, IMG_FILTER_GAUSSIAN_BLUR);
}
return $image;
}
function colorize($img, $red, $green, $blue) {
$image = imagefilter($img, IMG_FILTER_COLORIZE, $red, $green, $blue);
return $image;
}
function create($img) {
ImagePNG($img);
imagedestroy($img);
}
$img = newimg(0, 500, 500);
$img = colorize($img, 0, 255, 0);
echo create($img);
?>
<?php
header ( "content-type: image/png" ) ;
function newimg( $id , $width , $height ) {
$image = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image , 0 , 0 , 0 ) ;
ImageLine( $image , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
return $image ;
}
function gaussian_blur( $img , $times ) {
$i = 0 ;
for ( $i = 0 ; $i < $times ; $i ++ ) {
$image = imagefilter( $img , IMG_FILTER_GAUSSIAN_BLUR) ;
}
return $image ;
}
function colorize( $img , $red , $green , $blue ) {
$image = imagefilter( $img , IMG_FILTER_COLORIZE, $red , $green , $blue ) ;
return $image ;
}
function create( $img ) {
ImagePNG( $img ) ;
imagedestroy( $img ) ;
}
$img = newimg( 0 , 500 , 500 ) ;
$img = colorize( $img , 0 , 255 , 0 ) ;
?>
dat geeft dit...
Citaat:
<br />
<b>Warning</b>: imagepng(): supplied argument is not a valid Image resource in <b>C:Xamppxampphtdocsindex.php</b> on line <b>31</b><br />
<br />
<b>Warning</b>: imagedestroy(): supplied argument is not a valid Image resource in <b>C:Xamppxampphtdocsindex.php</b> on line <b>32</b><br />
wat is er nou fout? :S
CDNC - 10/04/2007 09:32 (laatste wijziging 10/04/2007 09:32)
PHP ver gevorderde
Kom je nou voor elke fout hier de oplossing vragen en zelf de pootjes omhoog leggen ofzo? je zou eens wat kunnen opzoeken over GD, dan zul je wel zien dat je de mist in gaat op r26...
ok,ok, jij ging er niet de mist in, maar die persoon dat het voor je heeft gemaakt, zoek nou maar gewoon die fucntie op op PHP.net en vind de fout.
Jero3n - 10/04/2007 11:56 (laatste wijziging 10/04/2007 18:21)
PHP interesse
ik heb het zelf geschreven, nadat ik wat had gelezen over gd.
dus de fout zit in r26?
ik zal is kijken
Update:
ik heb de fout gevonden, en nu werkt ie! eindelijk...
dit is de code nu:
<?php
header("content-type: image/png");
function newimg($id, $width, $height) {
$image = ImageCreate($width, $height);
$achtergrond = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
ImageLine($image, 0, 0, $width, 0, $black);
ImageLine($image, 0, $height-1, $width, $height-1, $black);
ImageLine($image, 0, 0, 0, $height-1, $black);
ImageLine($image, $width-1, 0, $width-1, $height-1, $black);
return $image;
}
function gaussian_blur($img, $times) {
$i=0;
for ($i=0; $i < $times; $i++){
imagefilter($img, IMG_FILTER_GAUSSIAN_BLUR);
}
return $img;
}
function colorize($img, $red, $green, $blue) {
imagefilter($img, IMG_FILTER_COLORIZE, $red, $green, $blue);
return $img;
}
function create($img) {
ImagePNG($img);
imagedestroy($img);
}
$img = newimg(0, 500, 500);
$img = colorize($img, 0, 255, 0);
$img = gaussian_blur($img, 10);
echo create($img);
?>
<?php
header ( "content-type: image/png" ) ;
function newimg( $id , $width , $height ) {
$image = ImageCreate( $width , $height ) ;
$achtergrond = ImageColorAllocate( $image , 255 , 255 , 255 ) ;
$black = ImageColorAllocate( $image , 0 , 0 , 0 ) ;
ImageLine( $image , 0 , 0 , $width , 0 , $black ) ;
ImageLine( $image , 0 , $height - 1 , $width , $height - 1 , $black ) ;
ImageLine( $image , 0 , 0 , 0 , $height - 1 , $black ) ;
ImageLine( $image , $width - 1 , 0 , $width - 1 , $height - 1 , $black ) ;
return $image ;
}
function gaussian_blur( $img , $times ) {
$i = 0 ;
for ( $i = 0 ; $i < $times ; $i ++ ) {
imagefilter( $img , IMG_FILTER_GAUSSIAN_BLUR) ;
}
return $img ;
}
function colorize( $img , $red , $green , $blue ) {
imagefilter( $img , IMG_FILTER_COLORIZE, $red , $green , $blue ) ;
return $img ;
}
function create( $img ) {
ImagePNG( $img ) ;
imagedestroy( $img ) ;
}
$img = newimg( 0 , 500 , 500 ) ;
$img = colorize( $img , 0 , 255 , 0 ) ;
$img = gaussian_blur( $img , 10 ) ;
?>
enne, de fout was dat er was gedaan $img = imagefilter(); en het moet zijn imagefilter() zonder $img =
dat wist ik wel, maar ik geloof dark_paul had dat veranderd, omdat hij niet zo veel van gd afwist, zoals hij al zei.
en het was me nog niet opgevallen dat hij dat had gedaan...
Gesponsorde links
Dit onderwerp is gesloten .