大きな画像でいっぱいのフォルダからサムネイルを自動的に生成するスクリプトが必要でした。私はそれを実装する際にいくつかの問題に遭遇しました。
必要なすべてのphpthumbファイルを含めていなかったため、早い段階でエラーが発生していましたが、現在、エラーはphpthumbコード自体から発生しています。必要に応じてさらにコードを投稿します。
エラー:
Warning: getimagesize(.\.) [function.getimagesize]: failed to open stream: Permission denied in C:\xampp\htdocs\mysite\GdThumb.inc.php on line 1070
Fatal error: Uncaught exception 'Exception' with message 'File is not a valid image: .\.' in C:\xampp\htdocs\mysite\ThumbBase.inc.php:193 Stack trace: #0 C:\xampp\htdocs\mysite\GdThumb.inc.php(1081): ThumbBase->triggerError('File is not a v...') #1 C:\xampp\htdocs\mysite\GdThumb.inc.php(98): GdThumb->determineFormat()
#2 C:\xampp\htdocs\mysite\ThumbLib.inc.php(127): GdThumb->__construct('.\.', Array, false) #3 C:\xampp\htdocs\mysite\save_differentformat.php(47): PhpThumbFactory::create('.\.') #4 {main} thrown in C:\xampp\htdocs\mysite\ThumbBase.inc.php on line 193
スクリプト:
require_once '../mysite/ThumbLib.inc.php';
$dir = "../mysite/images" ;
$destination = "../mysite/thumbnails" ;
$images = scandir($dir);
foreach ($images as $image)
{
$ext = pathinfo($dir . DIRECTORY_SEPARATOR . $image,PATHINFO_EXTENSION);
$thumb = PhpThumbFactory::create($image . DIRECTORY_SEPARATOR. $image);
$thumb->adaptiveResize(100, 100);
$thumb->save($destination . DIRECTORY_SEPARATOR. $image, $ext);
$thumb->show();
}
?>
編集
これが私が今受け取っているエラーメッセージです。$ modeが何であるかを知らないので、そのフォルダーに画像タイプが混在している可能性があります。
Notice: Undefined variable: mode in C:\xampp\htdocs\mysite\save_differentformat.php on line 51
Warning: getimagesize(.\.) [function.getimagesize]: failed to open stream: Permission denied in C:\xampp\htdocs\mysite\GdThumb.inc.php on line 1070
Fatal error: Uncaught exception 'Exception' with message 'File is not a valid image: .\.' in C:\xampp\htdocs\mysite\ThumbBase.inc.php:193 Stack trace: #0 C:\xampp\htdocs\mysite\GdThumb.inc.php(1081): ThumbBase->triggerError('File is not a v...') #1 C:\xampp\htdocs\mysite\GdThumb.inc.php(98): GdThumb->determineFormat()
#2 C:\xampp\htdocs\mysite\ThumbLib.inc.php(127): GdThumb->__construct('.\.', Array, false) #3 C:\xampp\htdocs\mysite\save_differentformat.php(64): PhpThumbFactory::create('.\.') #4 {main} thrown in C:\xampp\htdocs\mysite\ThumbBase.inc.php on line 193
scandir()が返すものは次のとおりです。
array(19) { [0]=> string(1) "." [1]=> string(2) ".." [2]=> string(36) "13912d3e8b4ae1890457fe935cc0c7fe.png" [3]=> string(36) "266c484ca488d053255c7767af212bee.png" [4]=> string(36) "8af941c37874dc3a7edee2772b60c323.png" [5]=> string(9) "Thumbs.db" [6]=> string(15) "butterflies.png" [7]=> string(22) "butterfliesinverse.png" [8]=> string(11) "favicon.png" [9]=> string(36) "fb9e25f57d12ec5019aa548665f34fa5.png" [10]=> string(20) "image1.png" [11]=> string(25) "image11 (1).png" [12]=> string(21) "image11.png" [13]=> string(25) "image12 (1).png" [14]=> string(21) "image12.png" [15]=> string(21) "image15.png" [16]=> string(20) "image2.png" [17]=> string(21) "image25.png" [18]=> string(21) "image28.png" }