chrisj
Active member
I followed Jaxel's code from 2010: http://xenforo.com/community/threads/how-does-the-image-parser-work.7783/
This is run as part of a cron and the page returns blank. I tried turning on php error reporting but it doesn't make a difference. I decided to log everything in a file and I was able to track the problem to getimagesize and XenForo_Image_Abstract::createFromFile. It seems it either one can fail.
All the url's I pass are always valid image urls. They are also all png format.
Here is the code I am using.
This is run as part of a cron and the page returns blank. I tried turning on php error reporting but it doesn't make a difference. I decided to log everything in a file and I was able to track the problem to getimagesize and XenForo_Image_Abstract::createFromFile. It seems it either one can fail.
All the url's I pass are always valid image urls. They are also all png format.
Here is the code I am using.
PHP:
protected function saveThumbnail($imageUrl, $type, $id, $width){
XenForo_Helper_File::log(
'psnleaderboard-test',
sprintf("saveThumbnail - %s\n%s\t%s\t%s\n",
$imageUrl, $type, $id, $width)
);
echo "<br/>saveThumbnail($imageUrl, $type, $id, $width)<br/>";
// get extension of image
$extension = XenForo_Helper_File::getFileExtension($imageUrl);
XenForo_Helper_File::log(
'psnleaderboard-test',
sprintf("got extension: %s\n", $extension)
);
// get width, height and type of image
$imageInfo = @getimagesize($imageUrl); // This sometimes fails
if (!$imageInfo)
{
XenForo_Helper_File::log(
'psnleaderboard-test',
sprintf("image info failed\n")
);
echo "image info failed<br/>";
return false;
}
XenForo_Helper_File::log(
'psnleaderboard-test',
sprintf("imageInfo[2] - %s\n", $imageInfo[2])
);
// set target save location
$filePath = XenForo_Helper_File::getExternalDataPath().'/psnleaderboards/images/'.$type.'/s/'.$id.'.'.$extension;
XenForo_Helper_File::log(
'psnleaderboard-test',
sprintf("filepath created\n")
);
// create image object from existing image
if ($image = XenForo_Image_Abstract::createFromFile($imageUrl, $imageInfo[2])) // this also can fail
{
XenForo_Helper_File::log(
'psnleaderboard-test',
sprintf("image created\n")
);
// resize image object to 160 width
$image->thumbnail($width);
print_r($imageInfo);
// save thumbnail image to target location
$directory = dirname($filePath);
if (XenForo_Helper_File::createDirectory($directory, true) && is_writable($directory))
{
if (file_exists($filePath))
{
unlink($filePath);
}
$image->output($imageInfo[2], $filePath);
XenForo_Helper_File::log(
'psnleaderboard-test',
sprintf("succeeded saving Thumbnail\n")
);
return true;
}
}
XenForo_Helper_File::log(
'psnleaderboard-test',
sprintf("failed saving Thumbnail\n")
);
return false;
}