2016-11-06 5 views
1

画像をアップロードして、PHPでサイズを変更したいと思います。私がアップロードし、この入力を使用しています:PHPの入力を上書きする

<td><form action="uploadpic.php" method="POST" enctype="multipart/form-data" /> 
     <input type="file" name="user_image" id="user_image" /> 
     <input name = "button" type = "button" id = "button" 
          value = "Küldés" onclick="subm(this.form,'_blank');"> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script type="text/javascript"> 
function subm(f,newtarget){ 
f.submit(); 
} 
</script> 

そして、ここでは、私がuploadpic.phpファイルでやっているものです:

$target_path = "images/clients/"; 
$target_path = $target_path . basename($_FILES['user_image']['name']); 

function resize_image($file, $w, $h, $crop=FALSE) { 
list($width, $height) = getimagesize($file); 

echo "original width ". $width." height ". $height; 

$r = $width/$height; 
if ($crop) { 
    if ($width > $height) { 
     $width = ceil($width-($width*abs($r-$w/$h))); 
    } else { 
     $height = ceil($height-($height*abs($r-$w/$h))); 
    } 
    $newwidth = $w; 
    $newheight = $h; 
} else { 
    if ($w/$h > $r) { 
     $newwidth = $h*$r; 
     $newheight = $h; 
    } else { 
     $newheight = $w/$r; 
     $newwidth = $w; 
    } 
} 
echo "new width ". $newwidth." height ". $newheight; 
$src = imagecreatefromjpeg($file); 
$dst = imagecreatetruecolor($newwidth, $newheight); 
imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

return $dst; 
} 

if(move_uploaded_file($_FILES['user_image']['tmp_name'], $target_path)) { 
echo "The file ". basename($_FILES['user_image']['name']). 
"Image has been uploaded"; 

$_FILES['user_image'] = resize_image($target_path, 50, 50); 

echo "The file ". basename($_FILES['user_image']['name']). 
" Image has been resized"; 

if(move_uploaded_file($_FILES['user_image']['name'], $target_path)) { 
echo "The file ". basename($_FILES['user_image']['name']). 
" Resized image has been uploaded"; 
}else{ 
echo " Resized not uploaded because of error #".$_FILES['user_image']['error']; 
} 

$image_name = 'alma'; 
$_SESSION['image_name']= 'alma'; 

} else{ 
echo "Not uploaded because of error #".$_FILES['user_image']['error']; 
} 

これは私がuser_image入力を上書きしようとしてまで働きます。だから私がしたいのは、画像をアップロードしてサイズを変更し、サイズ変更された画像をアップロードすることです。それがないので、私は、私はどのように上書きすることができ、それを聞いて、それをサーバーにアップロードしたい作品 $_FILES['user_image'] = resize_image($target_path, 50, 50);

:私はこのラインでuser_image入力を上書きしようとして見ることができるように?

+1

を助け

ホームは結果がresize_image' 'によってreturntedながら' $ _FILES [ 'user_imageは'] '、__array__であることをご理解ください(__NOT__配列である)__resource__のですか? –

+0

ありがとうございます。そして、あなたはそれをどうやって考えているのですか? –

+0

'imagejpeg'、' imagepng'関数が助けになります –

答えて

1

この素晴らしいPHPライブラリResize Image Class With PHPの使用をお勧めします。

これはあなたを助けることが私のコードの関連部分されています、私たちは$ _FILES [「で、photoFile」]は、我々はそれを保存し、その後、実際には存在しないとエラーがないことを

<?php 
. 
. 
. 
. 
require_once('ResizeImage.php'); 
if(isset($_FILES['photoFile']) && $_FILES['photoFile']['error'] == 0){ 

$extension = pathinfo($_FILES['photoFile']['name'], PATHINFO_EXTENSION); 

if(!in_array(strtolower($extension), $allowed)){ 
    $response = json_encode(array("error" => "true","message" => "The image has the wrong extention")); 
    echo $response; 
    exit; 
} 
/*generate unique filename*/ 
$t=time(); 
$x=$_FILES['photoFile']['name']; 
$name=md5($x.$t); 

/*Moves the uploaded file*/ 
if(move_uploaded_file($_FILES['photoFile']['tmp_name'], '../uploads/original/'.$name.'.'.$extension)){ 
    $firstimage = '../uploads/original/'.$name.'.'.$extension; 
    $secondimage = '../uploads/original/'.$name.'.'.$extension; 

    $small2 = compress($firstimage, $firstimage, 45); 
    $resize = new ResizeImage($small2); 
    unset($small2); 
    $resize->resizeTo(250, 250, 'maxWidth'); 
    $resize->saveImage('../uploads/thumb/'.$name.'.jpg'); 
    unset($resize); 

     //Compress & resize image large 

    $large = compress($secondimage, $secondimage, 45); 
    $resize2 = new ResizeImage($large); 
    unset($large); 
    $resize2->resizeTo(560, 560, 'maxWidth'); 
    $resize2->saveImage('../uploads/large/'.$name.'.jpg'); 
    unset($resize2); 
    /*file location for database*/ 

    $fileThumb = "uploads/thumb/".$name.".jpg"; 
    $fileLarge = "uploads/large/".$name.".jpg"; 
    $response = saveDatabase($nombre,$apellido,$email,$pais,$ciudad,$mensaje,$fileThumb,$fileLarge,$ip); 
    if ($response == 1) { 
    $response = json_encode(array("error" => "false","message" => "Thanks")); 
    echo $response; 
    }else{ 
    $response = json_encode(array("error" => "true","message" => "unknown error ")); 
    echo $response; 
} 

} 
} 

?> 

まず検証一時的な操作、サイズ変更、圧縮、新しい場所への保存を行うことができます。それは

+0

すばらしい答え!ご協力ありがとうございました!! –

+0

よろしくお願いします:) – Nick

関連する問題