これは、アップロードされた画像をさまざまなサイズのサーバーフォルダーに保存するために数時間試してきた私のコードです。ただし、画像は保存されておらず、どこが間違っているのかわかりません。以前は、以下の 2 番目のコード部分のように、モバイル側から何らかの方法でバイナリ データを取得して、バイナリで記述していました (写真はカメラから取得し、モバイルからオンザフライで送信されます)。しかし、これによりデータが増加します。モバイル側からもマルチパートタイプのファイルアップロードで画像ファイルをアップロードするためにも使用することにしました。
<?php
$imagefile = $_FILES["uploadphoto1"]["name"];
$errors=0;
$uploadPath = __DIR__."/contents/uploads";
define ("MAX_SIZE","4000");
$imagename = "testingimage";
if($imagefile)
{
$filename = stripslashes($_FILES['uploadphoto1']['name']);
$extension = getExtension($filename);
$extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{
echo ' Unknown Image extension ';
$errors=1;
}
else
{
$file1 = $_FILES['uploadphoto1']['tmp_name'];
thumbnail_image($file1, "640", "480",$uploadPath.$imagename);
thumbnail_image($file1, "480", "340",$uploadPath.$imagename."_preview");
}
}else{
echo "No file is inserted>>>>>>>>>";
}
function thumbnail_image($original_file_path, $new_width, $new_height, $save_path="")
{
$imgInfo = getimagesize($original_file_path);
$imgExtension = "";
switch ($imgInfo[2])
{
case 1:
$imgExtension = '.gif';
break;
case 2:
$imgExtension = '.jpg';
break;
case 3:
$imgExtension = '.png';
break;
}
if ($save_path=="") $save_path = "thumbnail".$imgExtension ;
// Get new dimensions
list($width, $height) = getimagesize($original_file_path);
// Resample
$imageResample = imagecreatetruecolor($new_width, $new_height);
if ( $imgExtension == ".jpg" )
{
$image = imagecreatefromjpeg($original_file_path);
}
else if ( $imgExtension == ".gif" )
{
$image = imagecreatefromgif($original_file_path);
}
else if ( $imgExtension == ".png" )
{
$image = imagecreatefrompng($original_file_path);
}
imagecopyresampled($imageResample, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ( $imgExtension == ".jpg" )
imagejpeg($imageResample, $save_path.$imgExtension);
else if ( $imgExtension == ".gif" )
imagegif($imageResample, $save_path.$imgExtension);
else if ( $imgExtension == ".png" )
imagepng($imageResample, $save_path.$imgExtension);
}
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
if(isset($_POST['Submit']) && !$errors)
{
echo "Image Uploaded Successfully!";
}else{
echo "Image uploading failed>>>>>>>";
}
?>
しかし、以下はバイナリ データを取得していたときと同じ関数で動作しますが、このコードは現在のコードにはまったく含まれていません。
$file1 = tempnam($uploadPath, 'image1');
$fp1 = fopen($file1, 'wb');
fwrite($fp1, $binary1);// Here I have binary data of image.
fclose($fp1);
thumbnail_image($file1, "640", "480",$uploadPath.$imagelastid.".jpg");
thumbnail_image($file1, "480", "340",$uploadPath.$imagelastid."_preview.jpg");
誰かがこれを解決して正しい軌道に乗せるのを手伝ってくれたら本当にありがたいです。
このエラーが発生します:
getimagesize(): Read error! in C:\xampp\htdocs\MOBILE_PHP\imagephptest.php on line 48
48 行目は --> $imgInfo = getimagesize($original_file_path); です。
時々、同じ行でこのエラーが発生します。
getimagesize(): Filename cannot be empty in C:\xampp\htdocs\MOBILE_PHP\imagephptest.php
44行目