xamppにてPHP7.4.11,ImageMagickを使っている環境です。
$_FILEにてアップした画像のサムネイルを作成しようとしているだけなのですが、(省略している場所は特に関係ないと思います)問題の部分は中で使っているrealpath関数です。最初に出てくるrealpath()は正常に絶対パスを取得できますが、後のrealpathはbool(false)になります。画像を読み込む際は動作して、画像を書き込む時にfalseになるのは何故でしょうか?私の使い方が間違っているのかと思うのですが、わかりません。何かご存じでしたらご教示のほどよろしくお願いいたします。
~省略~ //ファイル拡張子を抽出する $main_pic_ex=strrchr($main_pic['name'],'.'); //画像ファイル名をランダムな一意の文字列にする $main_pic_name=random_string(50); if($main_pic['size']>0) { if($main_pic['size']>5000000) { print 'メイン画像が大きすぎます。最大でも5MB未満にして下さい。'; } else { $main_img=$main_pic_name.$main_pic_ex; move_uploaded_file($main_pic['tmp_name'],'./mem_img/'.$main_img); $main_org='./mem_img/'.$main_img; **$real_main_path=realpath($main_org);** // 縦横、600pxに収まるように縮小したい $width = 600; $height = 600; $image = new Imagick($real_main_path); // オリジナルのサイズ取得 $width_org = $image->getImageWidth(); $height_org = $image->getImageHeight(); // 縮小比率を計算 $ratio = $width_org / $height_org; if ($width / $height > $ratio) { $width = $height * $ratio; } else { $height = $width / $ratio; } // 縮小実行 $image->scaleImage($width, $height); // 保存 $image->setCompressionQuality(80); //保存先 $main_thum='./mem_img/thum/'.$main_img; **$real_main_thum_path=realpath($main_thum);** $image->writeImage($real_main_thum_path); $image->destroy(); print '<img src="'.$real_main_path.'">'; print '<br />'; } ~省略~
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。