[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Экспортер картинок
Bиталий
Всем привет. Пишу импортер картинок на сайт. Сейчас он выглядит следующим образом:
1) index.php

<?php
//index.php
require_once('controler.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Привет</title></head>
<body>
<form
method="post" action="index.php" enctype='multipart/form-data'>
Выберите файл: <input type="file" name="filename" size='10' /><br />
Введите ширину: <input type="number" name="width" max="500" min="1" value="50" style="width:50px" />px<br />
Введите длинну: <input type="number" name="height" max="500" min="1" value="50" style="width:50px" />px<br />
<input
type="submit" value="Выполнить" />
</form>
<hr />
<?
echo $string;?>
<hr />
</body>
</html>



2) controler.php

<?php
$root_path = $_SERVER['DOCUMENT_ROOT'];

if ($_FILES)
{
$name = $_FILES['filename']['name'];
move_uploaded_file($_FILES['filename']['tmp_name'], "$name");
Resize_Img($name, $name, $_POST['width'], $_POST['height']);

$string = "Загружаемое изображение '$name'<br /><img src='$name' />";
}

function Resize_Img($fname,$dname,$x,$y)
{
$old = imageCreateFromJpeg($fname);

$w = imageSX($old);
$h = imageSY($old);

$new = imageCreateTrueColor($x, $y);

imageCopyResampled($new, $old, 0, 0, 0, 0, $x, $y, $w, $h);
imageDestroy($old);

imageJpeg($new, $dname);
imageDestroy($new);

return true;
}
?>


Все, что он делает, это экспортирует картинку на сервер в корень сайта, изменяя ее длину и ширину на указанные. Я не могу добиться следующего:
1) Импортировать картинку и в оригинальном размере и в измененном нажатием одной кнопки.
2) Делать так, чтобы картинки сохранялись в папках "/resize" и "/pic". В первом каталоге сохранялась бы измененная версия, а во втором - исходная.
3) Изменять название картинок, дописывая в конец что-либо. То есть, если картинка первоначально называлась "hello.jpeg", то в итоге ресайзнутая должна называться "hello_r.jpeg", а нормального размера - "hello_n.jpeg"

Перекопал половину интернета, но не могу понять, как это сделать. Где прописывается адрес картинки, на который она загружается, как изменить ее название. Как узнать первоначальный размер картинки и запихнуть его в переменные $width и $height.

Заранее спасибо всем, кто отпишется.



Спустя 25 минут, 5 секунд (15.04.2012 - 22:24) Bodich написал(а):
Функция getimagesize() определяет размер изображения GIF, JPG, PNG, SWF, PSD, TIFF или BMP и возвращает размеры, тип файла и высоту/ширину текстовой строки, используемой внутри нормального HTML-тэга IMG.

посмотри в разделе готовые решения там есть класс по ресайзу картинок
ну а переменовать эт просто получаешь имя добавляешь префикс записываешь. пошурши ф-ции php

Спустя 5 минут, 46 секунд (15.04.2012 - 22:30) Bиталий написал(а):
Проблема в том, что я не очень понимаю, как обратиться к этому файлу. Как $_POST['filename']['name']?

А как определяется, в какую директорию файл заливается?

Спустя 1 час, 7 минут, 55 секунд (15.04.2012 - 23:38) Bodich написал(а):
move_uploaded_file($_FILES['filename']['tmp_name'], "$PATH_TO_LOAD"); smile.gif

Спустя 9 минут (15.04.2012 - 23:47) Bиталий написал(а):
В том-то и дело, когда я заменяю в контроллере строку
move_uploaded_file($_FILES['filename']['tmp_name'], "$name");

на:
move_uploaded_file($_FILES['filename']['tmp_name'], "$root_path/files/$name");


Вылезают ошибки:
Warning: move_uploaded_file(/home/www/z211989/htdocs/files/this.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/www/z211989/htdocs/2/controler.php on line 7

и
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/home/tmp/php0MpzqO' to '/home/www/z211989/htdocs/files/this.jpg' in /home/www/z211989/htdocs/2/controler.php on line 7


И картинка все равно сохраняется в корне сайта.


Спустя 13 часов, 2 минуты, 15 секунд (16.04.2012 - 12:49) walerus написал(а):
Чему у тебя равно "$root_path/files/$name" - сделай
echo "My PATCH |$root_path/files/$name|";
Проверь что бы все папки существовали по пути и права на них 777.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.