|
|
|
|
|
для: Киналь
(01.10.2009 в 13:47)
| | да так и задумано...должно залить и перезаписать уменьшенной по размеру...дело было в том что по ХТТП нельзя так делать, нужно было полный путь указать. Вот сейчас очередную задачку поставил это наложить ватермарку, либо текстовую, либо картинкой..пробовал текстом, не вышло :( приложу код доработанный, но без прорисовки ватермарки...прошу указать куда и что вписать..Заранее благодарен.
<?php
list($date,$time) = explode(" ",date("Y-m-d H:i:s"));
list($Y,$m,$d) = explode("-",$date);
list($H,$i,$s) = explode(":",$time);
if($_FILES["uploads"]["error"] == 1)
$err = "Размер файла превышает 2 мегабайта";
//if($_FILES["uploads"]["type"] != "image/jpeg" || $_FILES["uploads"]["type"] != "image/jpg")
// $err = "Тип файла запрещен к загрузке";
$image = $_POST['select_cat']."_".$Y.$m.$d.$H.$i.$s.rand(100,300).".jpg";
copy($_FILES["uploads"]["tmp_name"], "uploads/photos/".$image);
function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением
// $filename = "../".$filename;
// Имя файла с уменьшенной копией.
// $smallimage = "../".$smallimage;
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
//sata1/home/users/furmani/www/www.furmani.dp.ua/uploads/photos/
$bigimage = "K:/home/10.100.20.227/www/uploads/photos/".$image;
$smallimage = "K:/home/10.100.20.227/www/uploads/photos/".$image;
resizeimg($bigimage, $smallimage, 800, 600);
$bigimage2 = "K:/home/10.100.20.227/www/uploads/photos/".$image;
$smallimage2 = "K:/home/10.100.20.227/www/uploads/photos/thumbs/".$image;
resizeimg($bigimage2, $smallimage2, 151, 235);
?>
|
| |
|
|
|
|
|
|
|
для: TetRiska
(30.09.2009 в 22:39)
| | У вас совпадают $bigimage и $smallimage.Так и задумано? | |
|
|
|
|
|
|
|
для: TetRiska
(30.09.2009 в 00:26)
| | Емм сделал пока упрощенную загрузку файла, но после загрузки он должен уменьшится, но почему-то не хочет, где я ошибся в коде?
<?php
//print_r($_POST);
//print_r($_FILES);
list($date,$time) = explode(" ",date("Y-m-d H:i:s"));
list($Y,$m,$d) = explode("-",$date);
list($H,$i,$s) = explode(":",$time);
if($_FILES["uploads"]["error"] == 1)
$err = "Размер файла превышает 2 мегабайта";
$image = $_POST['select_cat']."_".$Y.$m.$d.$H.$i.$s.rand(100,300).".jpg"; //формируем название картинки
copy($_FILES["uploads"]["tmp_name"], "uploads/photos/".$image);
function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением
// $filename = "../".$filename;
// Имя файла с уменьшенной копией.
// $smallimage = "../".$smallimage;
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img, $smallimage); //63 строка
else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
$bigimage = DOMEN."/uploads/photos/".$image;
$smallimage = DOMEN."/uploads/photos/".$image;
resizeimg($bigimage, $smallimage, 800, 600);
?>
|
Файл заливается, копируется из временной папки, но не уменьшается, выдает такую ошибку:
Warning: imagejpeg() [function.imagejpeg]: Unable to open 'http://10.100.20.227/uploads/photos/1_20090930213529262.jpg' for writing: Invalid argument in K:\home\10.100.20.227\www\dmn\modules\adminpanel\index.php on line 63. Я в коде пометил 63-ю строку. Прошу помощи. | |
|
|
|
|
|
|
|
для: neadekvat
(30.09.2009 в 00:11)
| | Приношу извинения, я подумал то фиксированном размере речь шла, а то оказывается максимальное значение превьюшки..спс всем за помощь насчет ресайза...далее буду смотреть загрузку файлов ))) | |
|
|
|
|
|
|
|
для: TetRiska
(30.09.2009 в 00:06)
| | > там если не ошибаюсь жёстко указывается ширина и высота конечного рисунка
Откуда такое взяли?
// здесь вычисляем размеры, чтобы при масштабировании сохранились
// 1. Пропорции исходного изображения
// 2. Исходное изображение полностью помещалось на маленькой копии
// (не обрезалось)
|
Взято из того кода. Читайте внимательнее | |
|
|
|
|
 47.9 Кб |
|
|
для: cheops
(29.09.2009 в 22:50)
| | Благодарю за ссылку, но сперва я опробовал этот метод:
<?php
$filename = 'img.jpg';
$percent = 151; // Ширина изображения привью
header('Content-type: image/jpeg');
list($width, $height) = getimagesize($filename); // Получаем ширину и высоту большого изображения
$newheight = $height * $percent; // Перемножаем
$newwidth = $newheight / $width; // Делим
$thumb = imagecreatetruecolor($percent, $newwidth); // Цветное изображение
$source = imagecreatefromjpeg($filename); // JPEG
imagecopyresized($thumb, $source, 0, 0, 0, 0, $percent, $newwidth, $width, $height); // Создаем привью в во временный файл
imagejpeg($thumb,"imag.jpg","100");
?>
|
Могу сказать что при конечном качестве в 100 уменьшенная копия скриптом хуже смотрится чем уменьшенная копия сделанная фотошопом...приложу в архиве 2 картинки, первая - скрипт поработал, вторая - шоп. Взглянул на предложенный скрипт по ссылке, там если не ошибаюсь жёстко указывается ширина и высота конечного рисунка, что не особо подходит, нужно по ширине регулировать, как видно с рассмотренного скрипта, что выше. Прошу помощи разобраться почему так дефектно приведенный скрипт изменил картинку :( | |
|
|
|
|
|
|
|
для: TetRiska
(29.09.2009 в 22:39)
| | Ясно, возможно вас тогда заинтересует тема http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145, где как раз описывается создание уменьшенной копии изображения. | |
|
|
|
|
|
|
|
для: cheops
(29.09.2009 в 08:14)
| | я немного упустил...насчет загрузки 2-х фото я перегнул...нужно грузить 1 фотку и делать ее же копию, чтобы копия была уменьшенная автоматически..алгоритм такой как бы хотелось бы видеть:
1 - вбиваем данные, выбираем фотку
2 - жмем записать, фотка1 (большая) заливается в одну папку, а уменьшенная копия заливается в другую
3 - все данные и пути к картинкам заливаются в базу
вот чтобы хотелось получить, сейчас начну строить если не выйдет отпишу сюда :) | |
|
|
|
|
|
|
|
для: TetRiska
(29.09.2009 в 02:29)
| | Немного не так, дело в том, что изображения передаются при помощи специального глобального массива $_FILES, поэтому извлекать их нужно именно из него. Возможно вас заинтересует пример по ссылке http://www.softtime.ru/scripts/upload.php. | |
|
|
|
|
 19.4 Кб |
|
| Всем привет. На скрине я прикрепил форму добавления изделия в базу. На форме, как видите, 2 поля для загрузки файлов. Значит так юзер вбивает данные и выбирает 2 файла и жмет Записать, что произойдет? Как именно должно быть? Я думаю так - файлы запишутся на сервер, произойдет проверка их на соответствие типу, потом пути к этим файлам будут хранится в переменных $_POST['file1'] и $_POST['file2'] после чего произойдет добавление данных по сформированному запросу? Правильно ли я описал? И можно приблизительный пример реализации? Смотрел в поиске, куча вариантов, но везде идет спор о правильности реализации. Заранее благодарен за все возможные виды помощи. | |
|
|
| |
|