2012-02-10 11 views
0

フォームでアップロードした画像のサイズを変更しようとしています。PHPスクリプトによる画像のサイズ変更

upload.php:

<?php 

    session_start(); 
    require_once "database.php"; 
    db_connect(); 
    require_once "auth.php"; 
    $current_user = current_user(); 

    $emailstring = $current_user['email']; 

//Check to see if the type of file uploaded is a valid image type 
function is_valid_type($file) 
{ 
    //This is an array that holds all the valid image MIME types 
    $valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png"); 

    if (in_array($file['type'], $valid_types)) 
     return 1; 
    return 0; 

} 

function showContents($array) 
    { 

     echo "<pre>"; 
     print_r($array); 
     echo "</pre>"; 
    } 

//Set some constants 

//This variable is the path to the image folder where all the images are going to be stored 

//Note that there is a trailing forward slash 
$TARGET_PATH = "profile_images/"; 

//Get our POSTed variables 
$upload_picture_fileinput = $_FILES['upload_picture_fileinput']; 


//Sanitize input 
$upload_picture_fileinput['name'] = mysql_real_escape_string($upload_picture_fileinput['name']); 

//Build our target path full string. This is where the file will be moved to 
//i.e. profile_images/picture.jpg 
$TARGET_PATH .= $upload_picture_fileinput['name']; 

if(!is_valid_type($upload_picture_fileinput)) { 

    $_SESSION['error'] = "You must upload a jpeg, gif, bmp, or png"; 
    header("Location: account.php"); 
    exit; 


    } 

//attempt to move the file from its temporary directory to its new home 
if (move_uploaded_file($upload_picture_fileinput['tmp_name'], $TARGET_PATH)) { 

    $sql = "UPDATE `users` SET `profile_image_filename`='" . $upload_picture_fileinput['name'] . "' 
         WHERE email='$emailstring'"; 


    $result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error()); 

    header("Location: account.php"); 
    exit; 
} 
else 
{ 


    $_SESSION['error'] = "Could not upload file. Check read/write permissions on the directory"; 
    header("Location: account.php") ; 
    exit; 

    } 

と私のフォームは次のとおりです。

<div class="pictures add_pictures"> 
      <div class="add_picture"> 
       <div class="upload_picture"> 
        <form action="upload.php" method="POST" enctype="multipart/form-data" name="upload_picture_form" class="upload_picture_form"> 
         <span class="add_picture_label">+ Add a Profile Picture</span> 
         <input type="file" name="upload_picture_fileinput" class="upload_picture_file_input"/> 
         <input type="hidden" name="MAX_FILE_SIZE" value="100000"/> 
         <br><br><br><br><br><br><br> 

         <input type="submit" id="submit" value="Upload" /> 
        </form> 
       </div> 
      </div> 
     </div> 

     <?php 

      $sql = "select * FROM `users` WHERE `id`='$id'"; 
      $result = mysql_query($sql) or die ("Could not access DB: " . mysql_error()); 



       $row = mysql_fetch_assoc($result); 


       echo "<p>"; 

       echo "<img src=\"profile_images/" . $row['profile_image_filename'] . "\" alt=\"\" /><br />"; 
       echo "</p>"; 



     ?> 
            //not currently working 
       <img src="/imageresize.php"/> 
私も画像をアップロードするには、次のコードを使用しています http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/

:私はここのスクリプトシーンを使用しています

上記のエコーは画像をうまく印刷しますが、そのファイル名を使用して画像のサイズを変更しようとすると、画像は表示されません。

<?php 
    session_start(); 
    require_once "database.php"; 
    db_connect(); 
    require_once "auth.php"; 
    $current_user = current_user(); 

    $resized_image = '\"profile_images/" . $row['profile_image_filename'] . "\" alt=\"\" /'; 

    header('Content-Type: image/jpg'); 
    include('SimpleImage.php'); 
    $image = new SimpleImage(); 
    $image->load($resized_image); 
    $image->resizeToWidth(300); 
    $image->output(); 


?> 

データベースに接続していて、画像ファイル名がデータベースに保存されています。上記のファイルパスが画像を印刷する理由はわかりませんが、resizeスクリプトでは動作しません。可能であればお手伝いください。ありがとうございました。

答えて

1

$ resized_imageのように、$ image-> load($ resized_image);に入力するパラメータの一部ではないはずのhtml altタグを追加しました。

ではなく、すでにHTMLレンダリングを対象とした文字列の

$image->load('profile_images/' . $row['profile_image_filename']); 

にこれを変更してみてください。

+0

これはまだサイズ変更された画像を返さない –

+0

nm、私は物事に変更し、それは働いた。ありがとう、オラフ!! –

+0

あなたは大歓迎です。 – Olaf

2

以下のコードはcreateThumbsという名前の関数を作成し、3つのパラメータを取得します。 1番目と2番目は、それに対応して元のイメージを含むディレクトリへのパスと、サムネイルが配置されるディレクトリへのパスです。 3番目のパラメータは、サムネイル画像に必要な幅です。

<?php 
    function createThumbs($pathToImages, $pathToThumbs, $thumbWidth) 
    { 
     // open the directory 
     $dir = opendir($pathToImages); 

     // loop through it, looking for any/all JPG files: 
     while (false !== ($fname = readdir($dir))) { 
     // parse path for the extension 
     $info = pathinfo($pathToImages . $fname); 
     // continue only if this is a JPEG image 
     if (strtolower($info['extension']) == 'jpg') 
     { 
      echo "Creating thumbnail for {$fname} <br />"; 

      // load image and get image size 
      $img = imagecreatefromjpeg("{$pathToImages}{$fname}"); 
      $width = imagesx($img); 
      $height = imagesy($img); 

      // calculate thumbnail size 
      $new_width = $thumbWidth; 
      $new_height = floor($height * ($thumbWidth/$width)); 

      // create a new temporary image 
      $tmp_img = imagecreatetruecolor($new_width, $new_height); 

      // copy and resize old image into new image 
      imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

      // save thumbnail into a file 
      imagejpeg($tmp_img, "{$pathToThumbs}{$fname}"); 
     } 
     } 
     // close the directory 
     closedir($dir); 
    } 
    // call createThumb function and pass to it as parameters the path 
    // to the directory that contains images, the path to the directory 
    // in which thumbnails will be placed and the thumbnail's width. 
    // We are assuming that the path will be a relative path working 
    // both in the filesystem, and through the web for links 
    createThumbs("upload/","upload/thumbs/",100); 
    ?> 
+1

+1素晴らしい投稿 –

関連する問題