|
|
|
| есть такой код
$name = $_FILES['upload']['name'];
$temp = $_FILES['upload']['tmp_name'];
move_uploaded_file ($temp,"avatar/$name");
$way = "avatar/$name";
как создать клон этой картинки с размером например 100 на 100 | |
|
|
|
|
|
|
|
|
для: cheops
(17.03.2011 в 21:54)
| | там код какой то большой за 2005 год и мне нужно только копия изображения из $way которая выводится на экран. хочу увидеть на экране 2 одинаковых изображения (
у меня есть скрипт который уменьшает изображение)
пытался так
$way = "avatar/$name";
$im = @imagecreatefromjpeg($way);
echo "<img id='ladybug' src='$way'>";
echo "<br><img id='ladyb' src='$im'>";
|
выводит на экран только первое изображение из которого мы пытались создать копию
брал специально картинку jpg
попробовал copy ( $way, $way2);
echo "<img id='lady' src='$way2'>";
Warning: copy() [function.copy]: Filename cannot be empty in C:\denwer\www\denwer\Tools\crop\text.php on line 56
как указать имя ? | |
|
|
|
|
|
|
|
для: kvins
(18.03.2011 в 13:06)
| | >там код какой то большой за 2005 год и мне
Вам не обязательно в нем разбираться, просто возьмите функцию, передайте ей путь к большому изображению, к маленькому изображению и задайте размеры. В GDLib ничего революционного с тех пор не происходило, поэтому код не требует доработки.
Ошибка происходит по тому, что вы вместо пути подставляете дескриптор изображения. | |
|
|
|
|
|
|
|
для: cheops
(18.03.2011 в 14:31)
| | ну мне чета понравился этот скрипт для обработки изображений http://recens.ru/php/resize_and_crop.html
он делает ресайз и кроп изображения ,
не хочется подключать еще 1 скрипт только для того чтоб создать копию изображения , или это столько прописывать надо?
щас подставил $temp = $_FILES['upload']['tmp_name'];
f(is_uploaded_file($temp)) {
copy ($temp, $way2);
echo "<img id='lady' src='$way2'>";
и то же самое ( что надо подставлять? | |
|
|
|
|
|
|
|
для: kvins
(18.03.2011 в 15:51)
| | Проверьте, что возвращает функция copy(), возможно она не может скопировать файл в $way2 в силу каких-то причин. | |
|
|
|
|
|
|
|
для: cheops
(18.03.2011 в 16:02)
| | а как проверяется что возвращает функция? чет никогда не нуждался в этом. | |
|
|
|
|
|
|
|
для: kvins
(18.03.2011 в 17:19)
| | Примерно так
<?php
...
if(copy ($temp, $way2)) echo "Все хорошо";
else echo "Все плохо";
...
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(18.03.2011 в 17:27)
| | все ужасно =)
может код не в той последовательности ?
немного лишнее что ниже else убрал
<?
if (isset($_POST['send']))
{
$name = $_FILES['upload']['name'];
$temp = $_FILES['upload']['tmp_name'];
$type = $_FILES['upload']['type'];
$size = $_FILES['upload']['size'];
list($width, $height, $type, $attr) = getimagesize($temp);
$type = intval($type);
if($type <= 0) {exit("Загружен какой-то левый формат"); }
else {
if ($size <= 4000000) {
if(is_uploaded_file($temp)) {
copy ($temp, $way2);
if(copy ($temp, $way2)) echo "Все хорошо";
else echo "Все плохо";
echo "<img id='lady' src='$way2'>";
move_uploaded_file ($temp,"avatar/$name");
$way = "avatar/$name";
echo "<img id='ladybug' src='$way'>";
}
else {echo "фото не загружено";}
}
|
| |
|
|
|
|
|
|
|
для: kvins
(18.03.2011 в 17:43)
| | Во-первых у вас должен быть только один вызов copy(), во-вторых лучше его применять уже после move_uploaded_file(), не все системы позволяют использовать copy() применительно к файлам из временной директории
<?php
if (isset($_POST['send']))
{
$name = $_FILES['upload']['name'];
$temp = $_FILES['upload']['tmp_name'];
$type = $_FILES['upload']['type'];
$size = $_FILES['upload']['size'];
list($width, $height, $type, $attr) = getimagesize($temp);
$type = intval($type);
if($type <= 0) {exit("Загружен какой-то левый формат"); }
else {
if ($size <= 4000000) {
if(is_uploaded_file($temp)) {
move_uploaded_file ($temp,"avatar/$name");
$way = "avatar/$name";
echo "<img id='ladybug' src='$way'>";
if(copy ("avatar/$name", $way2)) echo "Все хорошо";
else echo "Все плохо";
echo "<img id='lady' src='$way2'>";
}
else {echo "фото не загружено";}
}
...
?>
| Кстати, где у вас формируется переменная $way2? Вы куда файл копируете? | |
|
|
|
|
|
|
|
для: cheops
(18.03.2011 в 17:55)
| | да это я забыл дописать , просто я перенес этот код в отдельный файл
написал в вашем коде перед
$way2 = $temp;
if(copy ("avatar/$name", $way2))
теперь пишет все хорошо
потом пробую так echo "<img id='lady' src='$way2'>"; , а как вывести картинку на экран если я передал только $_FILES['upload']['tmp_name']; а получается что ему еще имя надо передать потому что предыдущюю картинку я показывал так
$way = "avatar/$name";
echo "<img id='ladybug' src='$way'>";
а в copy никакое имя не указано | |
|
|
|
|
|
|
|
для: kvins
(18.03.2011 в 19:04)
| | >$way2 = $temp;
>if(copy ("avatar/$name", $way2))
А зачем из "avatar/$name" копировать файл обратно во временную директорию (его от туда сборщик мусора удалит)? Для нового файла нужно создать по аналогии с "avatar/$name" какое-то новое имя, например, так "avatar/small_$name". | |
|
|
|
|
|
|
|
для: cheops
(18.03.2011 в 19:23)
| |
if(copy ("avatar/small_$name", $way2))
| так? или я не правильно создаю имя?
Warning: copy(avatar/small_баскет.jpg) failed to open stream: No such file or directory in C:\denwer\www\denwer\Tools\crop\text.php on line 60
Все плохо | |
|
|
|
|
|
|
|
для: kvins
(18.03.2011 в 20:01)
| | наверно сначала копию нужно тоже в папку сохранить? или она автоматически должна появится там же где предыдущая | |
|
|
|
|
|
|
|
для: kvins
(18.03.2011 в 20:01)
| | Нет, нужно как-то так
if(copy ("avatar/$name", "avatar/small_$name"))
|
| |
|
|
|
|
|
|
|
для: cheops
(18.03.2011 в 20:06)
| | ураа прям в точку =)
все появилось у меня 2 одинаковых файла с разными именами
а толькот еще 1 вопрос , а полностью менять название можно? или php разницы нет выводить название из 20 букв или пару цифр
кстати imagedestroy он удаляет информацию о файле? что то я не понял что мне удалять $way1 $way2 ? так он вроде тока принемает значение
$way2 = "avatar/small_$name";
или то что попало в глобальный масив $_files | |
|
|
|
|
|
|
|
для: kvins
(18.03.2011 в 20:31)
| | >а толькот еще 1 вопрос , а полностью менять название можно?
Конечно.
> или php разницы нет выводить название из 20 букв или пару цифр
Ему все-равно, но следите, чтобы у вас названия не перезатирали друг дружку, если такой файл существует, а вы на его место записываете другой, то старый файл исчезнет без предупреждения.
>кстати imagedestroy он удаляет информацию о файле?
Он удаляет память, которая была выделена на работу с файлом библиотекой GDLib. Можете не заморачиваться, она будет автоматически возвращена в систему после того, как ваш скрипт завершит работу. | |
|
|
|