Ik heb een stukkie code om binnenkomende fotos op mijn website te sizen naar een vaste breedte. Werkt perfect op mijn ontwikkelomgeving maar bij mijn hosing provider (protagonist) krijg ik het maar niet spits. Iets met rechten denk ik, maar ik kan op een dirctory niet meer rechten geven dan 777.

Het zit in de functie imagejpeg () die er maar niet doorheen komt. Iemand een idee? Of zelfs een heel ander alternatief om JPG files te sizen?

Tx AadjeS
buiten je rechten op je dir...

heeft de file die je kopieerd wel de rechten 777?

en wat is je code?
Dennis,

Eigenlijk wordt er geen file gecopieerd maar gemaakt vanuit een 'image in memory'. Om het verhaal compleet te maken hieronder de code van de functie die ik samengesteld heb... Deze functie wordt aangeroepen vanuit een andere php file. Werkt prima op mijn eigen ontwikkelomgeving op mijn laptop, maar niet bij de provider.

Aad

<?php
//
// Function to size a JPG file ($sourceJPG) to a new file ($targetJPG) with
// a new width (in pixels) and a new height in ratio with the old width /
// height.
// Derived from sample code from www.phphulp.nl in october 2005 by Aad.
//
function a_sizeJPG ($sourceJPG, $targetJPG, $target_width = 100)
{
//
// Determine the source height and width and calculate the target height.
//
$source_dimension = getimagesize ($sourceJPG);
if (! $source_dimension)
{
echo 'sizeJPG: Source file could not be opened (getimagesize: ' . $sourceJPG . ')';
return 'failed';
}
$source_width = $source_dimension[0];
$source_height = $source_dimension[1];
$target_height = round (($source_height * $target_width / $source_width), 0);
//
// Create a resource object from the source JPG file.
//
$source_image = imagecreatefromjpeg ($sourceJPG);
if (! $source_image)
{
echo 'sizeJPG: Image creation failed (imagecreatefromjpeg: ' .
$sourceJPG . ')';
return 'failed';
}
//
// Next create an empty image resource with the target dimensions and
// copy the resampled source image into this target.
//
$target_image = imagecreatetruecolor ($target_width, $target_height);
$rb = imagecopyresampled ($target_image, $source_image, 0, 0, 0, 0,
$target_width, $target_height,
imagesx($source_image), imagesy($source_image));
if ($rb == false)
{
echo 'sizeJPG: Image resample failed (imagecopyresampled)';
return 'failed';
}
//
// Finally, write the image resource to the target file
//
$rb = imagejpeg ($target_image, $targetJPG);
if ($rb == false)
{
echo 'sizeJPG: Image creation failed (imagejpeg: ' . $targetJPG . ')';
return 'failed';
}
return true;
}
?>

Ik heb wat zitten kijken over het net....
misschien lukt dit?

touch($targetJPG);
$rb = imagejpeg ($target_image, $targetJPG);
chmod($targetJPG, 0777);
if ($rb == false)
{
echo 'sizeJPG: Image creation failed (imagejpeg: ' . $targetJPG . ')';
return 'failed';
}
return true;
}
>touch($targetJPG);
>$rb = imagejpeg ($target_image, $targetJPG);

Bingo!

Dat is inderdaad de oplossing. Muchas Gracias!

Aad

Reageren