PHP external command processing
Posted: 2006-04-24T08:25:07-07:00
I had a bit of learning to do to get IM working well with PHP's external command feature. I couldn't find any good documentaion that was of significant help.
It appears that the developers prefer designers use MagickWand and that is proabably good. However, my site is on a shared server and it doesn't have MagickWand and they won't install it just for me.
Here is some code I think will be of help to designers unfamiliar with using PHP and IM's command lines. Those familiar with PHP should be able to follow the logic and my reasoning.
Hope this helps folks getting started with IM and PHP.
If anyone has any additional help for newbies; please feel free to add it
It appears that the developers prefer designers use MagickWand and that is proabably good. However, my site is on a shared server and it doesn't have MagickWand and they won't install it just for me.
Here is some code I think will be of help to designers unfamiliar with using PHP and IM's command lines. Those familiar with PHP should be able to follow the logic and my reasoning.
Code: Select all
$IMinput_fpfile= ''; //if none OR
$IMinput_fpfile= getcwd() . '/whatever'; //make certain files are full path
$IMout_fpfile= getcwd() . '/fancy_title.png'; //your output file
$IMdebug= TRUE; //or FALSE; IMPORTANT, USE ONLY FOR INITIAL DEBUGGING
touch($IMout_fpfile); //this checks that IM can write its file
chmod($IMout_fpfile, 0647); //makes certain IM can write its file
$IMcmd_debug= ($IMdebug)? '-debug exception' : '';
//make certain your server's path to "convert" or "identify" etc. are correct
$IMinput= (empty($IMinput_fpfile))? '' : $IMinput_fpfile;
//A typical command
$command="convert $IMinput $IMcmd_debug -background lightblue -fill blue -font times -pointsize 72 label:Anthony $IMout_fpfile";
//here is the command line
exec("$command", $IMarray, $IMcode);
if($IMdebug){
//if there is an an input file, set to 1
if(0){$details=exec("$identify -verbose $IMinput_fpfile", $code); var_dump($details, $code);}
exec("convert -version", $array); echo($array[0]);
echo "<br><br>" . $command . "<br><br>";
echo "<pre>" . print_r($IMarray, TRUE) ."</pre>";
echo "<br>Error code: " . $IMcode;
}//end if
//Leave in operational code to catch failures
clearstatcache();
$filesize= filesize($IMout_fpfile);
if($filesize == 0 OR $IMcode !=0){
echo "<span style=\"color:red\"> Fatal error, image processor failed to create image file. Contect tech support. IM error code=$IMcode</span>";
}//end if
If anyone has any additional help for newbies; please feel free to add it