発生している問題・エラーメッセージ
パラメータ全て埋まっているはずなのに表示される
Warning: imagecopyresampled() expects parameter 2 to be resource, string given in /Applications/MAMP/htdocs/Sunseer_PHP_BBS/uploader.php on line 35
該当のソースコード
php
1<?php 2ini_set("display_errors", 1); 3error_reporting(E_ALL); 4$dsn = 'mysql:dbname=*; host=localhost; charset=utf8'; 5$user = '*'; 6$passwd = '*'; 7 8define("MAX_SIZE",1*1024*1024); 9define("THUMBNAIL_WIDTH",400); 10define("IMAGES_DIR",__DIR__."/Image"); 11define("THUMBNAIL_DIR",__DIR__."/Thumbs"); 12 13 14echo THUMBNAIL_WIDTH; 15 16$id = $_POST['id']; 17$image = $_FILES['image']['name']; 18$up_err = $_FILES['image']['error']; 19$src = $_FILES['image']['tmp_name']; 20$type = $_FILES['image']['type']; 21$dir = "Image/".$image; 22$image_size = getimagesize($_FILES['image']['tmp_name']); 23 24 25 26if ($_FILES['image']['size']<MAX_SIZE){ 27 $image_width = $image_size[0]; 28 $image_height = $image_size[1]; 29 30// THUMBNAIL_WITDH →Use of undefined constant THUMBNAIL_WITDH - assumed 'THUMBNAIL_WITDH' (this will throw an Error in a future version of PHP) 31 if ($image_width > 400 ) { 32 $thumbwidth = 400; 33 $thumbheight = round($image_height * 400/$image_width); 34 $thumbImage = imagecreatetruecolor(400,$thumbheight); 35 imagecopyresampled($thumbImage,$src,0,0,0,0,$thumbwidth,$thumbheight,$image_width,$image_height); 36 switch($type){ 37 case IMAGETYPE_GIF; 38 imagegif($thumbImage,THUMBNAIL_DIR.'/'.$image); 39 // ファイルの出力 40 case IMAGETYPE_PNG; 41 imagepng($thumbImage,THUMBNAIL_DIR.'/'.$image); 42 case IMAGETYPE_JPEG; 43 imagejpeg($thumbImage,THUMBNAIL_DIR.'/'.$image); 44 // 45 break; 46 default: 47 echo "判別できません"; 48 break; 49 } 50 } 51}else { 52echo "画像ファイルのサイズが大きすぎます"; 53} 54 55var_dump($_FILES); 56// print __DIR__; 57// $savePath = IMAGES_DIR."/{$src}"; 58 59 60 61 62if ($up_err == UPLOAD_ERR_OK) { 63 if (move_uploaded_file($src,$dir)) { 64 try { 65 $db = new PDO($dsn,$user,$passwd); 66 $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 67 $sql = "UPDATE db_BBS SET icon='$dir' WHERE id='$id'"; 68 // $stat = $db->query() 69 if(!$db->query($sql)){ 70 echo "sql処理に問題あり"; 71 } 72 } catch (\PDOException $e) { 73 print $e->getMessage(); 74 } 75// :TODO 76}else{ 77 echo "アップロード処理に失敗しました"; 78} 79}else { 80 echo "エラー:{$up_err}<br>"; 81} 82?> 83 84<!DOCTYPE html> 85<html lang="ja"> 86<head> 87 <meta charset="utf-8"> 88 <title>upload image</title> 89</head> 90<body> 91 <h1>images</h1> 92 <img src="<?php echo "Image/".$image; ?>"> 93
試したこと
ここに問題に対して試したことを記載してください。
問題箇所↓
if ($image_width > 400 ) { $thumbwidth = 400; $thumbheight = round($image_height * 400/$image_width); $thumbImage = imagecreatetruecolor(400,$thumbheight); imagecopyresampled($thumbImage,$src,0,0,0,0,$thumbwidth,$thumbheight,$image_width,$image_height); switch($type){ case IMAGETYPE_GIF; imagegif($thumbImage,THUMBNAIL_DIR.'/'.$image); // ファイルの出力 case IMAGETYPE_PNG; imagepng($thumbImage,THUMBNAIL_DIR.'/'.$image); case IMAGETYPE_JPEG; imagejpeg($thumbImage,THUMBNAIL_DIR.'/'.$image); // break; default: echo "判別できません"; break; }
前提・実現したいこと
アップロードされたファイルのテンポラリファイルをサムネイル化して、Thumbsディレクトリで管理したい
ここに質問の内容を詳しく書いてください。
$_FILE['image']['tmp_name']をソースとして、サムネイル画像を作成しThumbsディレクトリに保存したい
なぜimagecopyresampledできないかわからないです
どなたかご教授お願いします。
回答2件
あなたの回答
tips
プレビュー