Как я могу загрузить изображения в обычной форме вставки (MySql)? после загрузки изображение должно иметь три версии разных размеров и разных имен - PullRequest
0 голосов
/ 21 июня 2011

Теперь у меня есть такая форма вставки:

$sql="INSERT INTO products (pname, pcat, pimg1, pimg2, pimg3, pnotes, pclient, pclientaddress, pclientphone)
VALUES
('$_POST[pname]','$_POST[pcat]','$_POST[pimg1]','$_POST[pimg2]','$_POST[pimg3]','$_POST[pnotes]','$_POST[pclient]','$_POST[pclientaddress]','$_POST[pclientphone]')";

Вместо того, чтобы вводить значение URL трех разных изображений, есть ли способ, которым я могу загрузить одно изображение с разными размерами, исходное с именем 1001a и двумя другими 1001 и 1001b?

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Лучший способ сделать это - использовать константы.

Определить ваши константы для изображений различных размеров.

Как:

constants.php:

<?php

define("IMG_50x50", "thumb-50x50");
define("IMG_150x90", "thumb-150x90");
define("IMG_500x400", "thumb-500x500");

?>

В вашем .php файле:

<?
include "constants.php";

...
... code to retrieve the results.
...

# for 50x50 image
$imgName = IMG_50x50 . "-" . $row["image-file-name"];
echo "<img src='/common/img/path/". $imgName ."' />";

...
...

?>

Итак, всегда загружайте один файл и просто сохраняйте имя файла в записи БД.Используйте код изменения размера изображения из ответа @ Чаухана, чтобы сгенерировать другую версию изображений (вам не нужно хранить их в БД) - используйте constants.php для присвоения имени файлу другого размера.

1 голос
/ 21 июня 2011

Найдите ниже php-код для загрузки и обрезки изображения с помощью библиотеки GD. Вы можете сохранить только одно имя изображения в базе данных, и другие обрезанные изображения будут доступны с тем же именем, но оно должно храниться в другом каталоге, как показано ниже:

<?php
function createThumb($upfile, $dstfile, $max_width, $max_height){
   $size = getimagesize($upfile);
   $width = $size[0];
   $height = $size[1];
   $x_ratio = $max_width / $width;
   $y_ratio = $max_height / $height;
   if( ($width <= $max_width) && ($height <= $max_height)) {
           $tn_width = $width;
           $tn_height = $height;
   } elseif (($x_ratio * $height) < $max_height) {
           $tn_height = ceil($x_ratio * $height);
           $tn_width = $max_width;
   } else {
           $tn_width = ceil($y_ratio * $width);
           $tn_height = $max_height;
   }
   if($size['mime'] == "image/jpeg"){
           $src = ImageCreateFromJpeg($upfile);
           $dst = ImageCreateTrueColor($tn_width, $tn_height);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
           imageinterlace( $dst, true);
           ImageJpeg($dst, $dstfile, 100);
   } else if ($size['mime'] == "image/png"){
           $src = ImageCreateFrompng($upfile);
           $dst = ImageCreateTrueColor($tn_width, $tn_height);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
           Imagepng($dst, $dstfile);

   } else {

           $src = ImageCreateFromGif($upfile);
           $dst = ImageCreateTrueColor($tn_width, $tn_height);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height);
           imagegif($dst, $dstfile);
   }
}

//usage

if(isset($_FILES['upload_Image']['name']) && $_FILES['upload_Image']['name']!=='') {
    $ext = substr($_FILES['upload_Image']['name'], strpos($_FILES['upload_Image']['name'],'.'), strlen($_FILES['upload_Image']['name'])-1); 

    $imgNormal = time().$ext;
    $normalDestination = "Photos/Orignal/" . $imgNormal;
    $httpRootLarge = "Photos/Large/" . $imgNormal;
    $httpRootSmall = "Photos/Small/" . $imgNormal;
    $httpRootThumb = "Photos/Thumb/" . $imgNormal;
    move_uploaded_file($_FILES['upload_Image']['tmp_name'], $normalDestination);
    createThumb($normalDestination,$httpRootLarge,680,604); #For 604x604 Image 
    createThumb($normalDestination,$httpRootSmall,500,300); #For 500x300 Image
    createThumb($normalDestination,$httpRootThumb,130,100); #For 130x100 Image
}
?>
<form action="" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="upload_Image" id="upload_Image" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

Вам нужно хранить значение $ imgNormal только в базе данных.

для получения дополнительной информации нажмите на ссылку ниже:

http://pastebin.com/Ed2YHV6w

...