Изменение размера изображения с помощью PHP-скрипта - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь изменить размер изображения, которое я загрузил с формой.Я использую сценарий здесь: http://www.white -hat-web-design.co.uk / blog / resizing-images-with-php /

Я также использую следующиекод для загрузки изображения:

upload.php:

<code>    <?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 "
";} // Установка некоторых констант // Эта переменная - путь к папке с изображениями, где будут храниться все изображения// Обратите внимание, что есть косая черта $ TARGET_PATH = "profile_images /"; // Получить наши POSTed-переменные $ upload_picture_fileinput = $ _FILES ['upload_picture_fileinput']; // Очистить ввод $ upload_picture_fileinput ['name'] = mysql_real_escape $upload_picture_fileinput ['name']); // Создаем полную строку нашего целевого пути. Здесь файл будет перемещен в // т.е. profile_images / picture.jpg $ TARGET_PATH. = $ upload_picture_fileinput ['name']; if (! is_valid_type($ upload_picture_fileinput)) {$ _SESSION ['error'] = "Вы должны загрузить jpeg, gif, bmp или png"; заголовок ("Location: account.php"); exit;} // попытаться переместить файлиз своего временного каталога в свой новый дом яf (move_uploaded_file ($ upload_picture_fileinput ['tmp_name'], $ TARGET_PATH)) {$ sql = "ОБНОВЛЕНИЕ` пользователей` SET `profile_image_filename` = '".$ upload_picture_fileinput ['name']."'WHERE email =' $ emailstring '";$ result = mysql_query ($ sql) или die («Не удалось вставить данные в БД:». mysql_error ());заголовок («Location: account.php»);выход;} else {$ _SESSION ['error'] = "Не удалось загрузить файл. Проверьте разрешения на чтение / запись для каталога";заголовок («Location: account.php»);выход;}

и где моя форма:

<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"/>

Приведенное выше эхо хорошо печатает картинку, но когда я пытаюсь использовать это имя файла для изменения размера изображения, оно неПоявляются / работают.

<?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();


?>

Я подключаюсь к базе данных в порядке, и имя файла изображения сохраняется в моей базе данных.Я просто не знаю, почему путь файла выше будет печатать картинку, но не работает в скрипте изменения размера.Пожалуйста, помоги, если можешь.Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 июля 2013

Код ниже создает функцию с именем createThumbs, которая получит три параметра. Первый и второй соответственно представляют собой путь к каталогу, который содержит исходные изображения, и путь к каталогу, в который будут помещены эскизы. Третий параметр - это ширина, которую вы хотите для миниатюр.

<?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 голос
/ 10 февраля 2012

Похоже, что в $ resized_image вы добавили html alt-тег, который, конечно, не должен быть частью параметра, который вы вводите в $ image-> load ($ resized_image);.

Попробуйте изменитьэто к

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

вместо строки, уже предназначенной для рендеринга html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...