Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Скрипт создания изображения.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Dezmont
Отправлено: 16 Июля, 2010 - 21:57:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Народ подскажите, что можно сделать?
PHP:
скопировать код в буфер обмена
  1. <?
  2. $x1      = $_POST['x1'];
  3. $y1      = $_POST['y1'];
  4. $w         = $_POST['w'];
  5. $h         = $_POST['h'];
  6. $cat1      = $_POST['cat'];
  7. $image1= $_POST['image'];
  8. ################################################################
  9.  
  10. $way = "./files/$cat1/$image1";
  11.  
  12. $newImg  = imagecreatetruecolor($w*4, $h*4);
  13. $srcImg  = imagecreatefromjpeg($way);
  14. imagecopyresampled($newImg, $srcImg, 0, 0, $x1*4, $y1*4, $w*4, $h*4, $w*4, $h*4);
  15. imagejpeg($newImg, "cropped.jpg");
  16. ?>

Это для создания изображения из существующего изображения. Всё умножается на 4, потому что манипуляции проводятся с картинкой 640*400. А берётся картинка 2560*1600.
x1-отступ по абсцисс, н1-отступ по ординат. W и H соответственно ширина и высота веделенной области.
И потом файл cropped.jpg выводится пользователю, потому что сам скрипт ничего не показывает:
<img src="cropped.jpg" >.

[b]
Теперь подскажите:
1) Будет ли вообще этот скрипт работать? Потому что cropped.jpg должна изменяться непосредственно на самом сервере. Т.е. этот файлик будет находиться в папочке со всеми скриптами.
2) Как это скажется на скорости работы сайта, к примеру если сразу 20 человек обратятся к этому скрипту, не получат ли они неправильную картинку?
3) Может можно что-нибудь сделать с этим скриптом, чтобы картинка просто выводилась пользователю, и нигде на сервере не сохранялась.
4) Минимальные размеры картинки, которые получаются 1600*1200, а максимальные 2134*1600. А нужно, чтобы во всех ситуациях получалось 1600*1200.
Стоит ли второй раз обрабатывать cropped.jpg, чтобы получить уменьшенное до нужных размеров изображение, или можно сделать этот как нибудь-попроще?

P.S. Буду ооочень признателен, если хоть кто-нибудь ответит на все эти вопросы. Нужна помощь. Если что-то непонятно, спросите я объясню по другому. =)
 
 Top
Мелкий Супермодератор
Отправлено: 16 Июля, 2010 - 22:14:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




1) криминала не вижу, должен по идее работать. Вот только srcx и srcy у imagecopyresampled (5 и 6-ые параметры) я так понимаю должны быть как раз нулевые, хотя зависит от цели скрипта, поэкспериментируйте.
2) все получат правильную картинку, но вот на скорости отразится отрицательно, тем более для такой крупной картинки.
3) у imagejpeg удалите второй параметр и высылайте соответствующий заголовок, но запрашивать картинку надо через html-тег, но у скрипта уже, и, по-видимому, гетом. Пост туда не передастся
4) пара условий, который будут проверять, какие нужны размеры. Или я не понял пункта.

(Отредактировано автором: 16 Июля, 2010 - 22:16:12)



-----
PostgreSQL DBA
 
 Top
Dezmont
Отправлено: 16 Июля, 2010 - 22:38:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Спасибо. Но ещё возникли вопросы.
1) Так и задумано. Это Jcrop, там часть изображения по X или Y отрезается. С этим ясно.
2) Вот я и думаю, насколько отрицательно? Если +1 секунда при 10 одновременных подключениях, это ещё не очень страшно. Если больше, плохо. С этим потом разберусь, при покупке хостинга.
3) Я сделал вот так:
.
Нажимаю и у меня просто выводится кратинка, которую нельзя сохранить. То есть на странице http://localhost/3/saveCrop2.php она видима, но сохранить можно только скрипт. А при попытке открыть в новом окне вылазит куча Ошибок:
CODE (text):
скопировать код в буфер обмена
  1. Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in Z:\home\localhost\www\3\saveCrop2.php on line 13
  2.  
  3. Warning: imagecreatefromjpeg(./files//) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in Z:\home\localhost\www\3\saveCrop2.php on line 14
  4.  
  5. Warning: imagecopyresampled(): supplied argument is not a valid Image resource in Z:\home\localhost\www\3\saveCrop2.php on line 15
  6.  
  7. Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\3\saveCrop2.php:13) in Z:\home\localhost\www\3\saveCrop2.php on line 16
  8.  
  9. Warning: imagejpeg(): supplied argument is not a valid Image resource in Z:\home\localhost\www\3\saveCrop2.php on line 17
  10.  
  11. Warning: imagecreatefromjpeg(./files//) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in Z:\home\localhost\www\3\saveCrop2.php on line 18


4) Вот тут самая загвоздка. Мне в итоге нужно вывести пользователю изображение размером 1600*1200. В скрипте, который я привёл, могут получиться размеры от 1600*1200 до 2134 на 1600, в зависимости от того какую область изображения выделит пользователь. И выводится соответственно картинка большая чем нужно. И эту, получившуюся в результате скрипта, картинку нужно уменьшить до размеров 1600*1200 ничего не отрезая.
Вот, как то так.
 
 Top
qbik
Отправлено: 16 Июля, 2010 - 22:40:39
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




2. для проверки быстродействия в консоли ввести
$ ab -n 1000 -c 20 [http[s]://]hostname[:port]/path/твой_скрипт?параметры=параметры
-с количество одновременных запросов
-n общее число запросов

погоняй у себя, заочно не скажешь
 
 Top
Dezmont
Отправлено: 16 Июля, 2010 - 22:47:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




qbik пишет:
2. для проверки быстродействия в консоли ввести
$ ab -n 1000 -c 20 [http[s]://]hostname[:port]/path/твой_скрипт?параметры=параметры
-с количество одновременных запросов
-n общее число запросов

погоняй у себя, заочно не скажешь


А можно поподробнее? Куда это вставлять и где смотреть? Вместо hostname, port тоже что-то нужно указывать? В какой именно консоли?
 
 Top
Мелкий Супермодератор
Отправлено: 16 Июля, 2010 - 22:56:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Dezmont пишет:
2) Вот я и думаю, насколько отрицательно? Если +1 секунда при 10 одновременных подключениях, это ещё не очень страшно. Если больше, плохо. С этим потом разберусь, при покупке хостинга.

от CPU зависит.

Dezmont пишет:
Нажимаю и у меня просто выводится кратинка, которую нельзя сохранить.

Dezmont пишет:
и нигде на сервере не сохранялась.

? Однако
вместо POST, передавайте этому скрипту GET-параметры, типа так: <img src="image.php?x1=100&y1=50&w=далее_по_тексту">

Dezmont пишет:
картинку нужно уменьшить до размеров 1600*1200 ничего не отрезая.

ну тогда немного геометрия может поплыть. И лучше сразу инициализировать 1600х1200 картинку, а потом копировать в ней не х*4, а вычислять размер посложнее, чтобы вписаться в заданные габариты.

Dezmont пишет:
А можно поподробнее? Куда это вставлять и где смотреть? Вместо hostname, port тоже что-то нужно указывать? В какой именно консоли?

ssh или физическая консоль никсовой машины. $ - их командное приветствие.


-----
PostgreSQL DBA
 
 Top
Dezmont
Отправлено: 16 Июля, 2010 - 23:28:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Буду пробовать....=)

(Отредактировано автором: 17 Июля, 2010 - 01:03:23)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB