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 :: Класс для работы с изображениями class cms_img [2]

 PHP.SU

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


 Страниц (3): « 1 [2] 3 »   

> Описание: PHP, GD
ALEN Модератор
Отправлено: 14 Марта, 2011 - 11:07:07
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




EuGen
Сейчас проставил видимость, теперь думаю отпадут вопросы с названием методов)))
А фантазии в названия не хватает, поэтому не сильно привередлив в выборе имен, которые будут техническими и не доступными вне класса.
 
 Top
EuGen Администратор
Отправлено: 14 Марта, 2011 - 11:11:43
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Да, про видимость вижу. Я лишь заметил, что назания методов никак не связаны с областью их видимости, правила же единого стиля желательно применять вне зависимости от этой видимости.
ALEN пишет:
А фантазии в названия не хватает, поэтому не сильно привередлив в выборе имен, которые будут техническими и не доступными вне класса.

- вот это зря, ведь Вы можете потом через полгода-год заглянуть в код, и разобраться будет сложно. Да, здесь класс простой и одноуровневый (ничто ниоткуда не наследуется, не переопределяется и т.п.), но для более сложных это может вызвать трудности.
А вообще класс полезен. Я, конечно, свои использую, но посмотреть всегда любопытно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
ALEN Модератор
Отправлено: 14 Марта, 2011 - 11:23:17
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




EuGen пишет:
вот это зря

Я работаю над собой)))
 
 Top
ALEN Модератор
Отправлено: 17 Марта, 2011 - 17:50:03
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




Немного привел класс в порядок, чтоб можно было код читать)))
 
 Top
ALEN Модератор
Отправлено: 21 Марта, 2011 - 11:28:19
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




Очередное обновление класса, добавлена загрузка изображения по URL.
 
 Top
Zuldek
Отправлено: 21 Марта, 2011 - 14:52:34
Post Id


Постоянный участник


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


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




к сожалению без пинков не работает ни один из примеров Улыбка
попробовал, например 6 -
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: Cannot modify header information - headers already sent by (output started at Y:\home\test\www\resize.php:2) in Y:\home\test\www\resize.php on line 72
 
 Top
ALEN Модератор
Отправлено: 21 Марта, 2011 - 16:09:03
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




Zuldek
Код использования можно увидеть?
И еще судя из ошибки, уже заголовки header() пытались отправляться, поэтому и ошибка выводится. Метод output() сам выводит изображение и отправляет необходимые заголовки.
(Добавление)
Обновил еще раз класс.
- добавил возможность автоматически при сохранении присоединять разрешения файла
- избавился от лишнего использования PCRE
- добавил метод set_type() для принудительной замены типа изображения
 
 Top
dropoff
Отправлено: 26 Апреля, 2011 - 20:53:23
Post Id



Посетитель


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


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




А есть возможность делать сразу несколько копий картинок и клась по разным путям и с разными названиями?

Например если нужно залить 10 картинок.
 
 Top
DlTA
Отправлено: 27 Апреля, 2011 - 00:12:33
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




dropoff пишет:
А есть возможность делать сразу несколько копий картинок и клась по разным путям и с разными названиями?

а copy()+фантазия не подходят?!
 
 Top
dropoff
Отправлено: 27 Апреля, 2011 - 10:47:17
Post Id



Посетитель


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


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




Простите, не точно выразился. После дня голова не варит...

Например нужно к новости загрузить картинку в разных размерах.
Т.е.
большая - 600x300 (она как исходное изображение)
средняя - 300x150
и мелкая - 100x100

Или грузить 10 или 15 картинок и так же в несколько копий с разными размерами?

Если картинка меньшего размера который указан в загрузке, то ее растягиваем и она становится уродцем.

Если картинка размером 100x50, а при загрузке указаны размеры 100x100, то ее тупо растянет в квадрат, что не есть гуд.
 
 Top
Zuldek
Отправлено: 27 Апреля, 2011 - 10:52:35
Post Id


Постоянный участник


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


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




dropoff пишет:
Простите, не точно выразился. После дня голова не варит...

Например нужно к новости загрузить картинку в разных размерах.
Т.е.
большая - 600x300 (она как исходное изображение)
средняя - 300x150
и мелкая - 100x100

Или грузить 10 или 15 картинок и так же в несколько копий с разными размерами?

Если картинка меньшего размера который указан в загрузке, то ее растягиваем и она становится уродцем.

Если картинка размером 100x50, а при загрузке указаны размеры 100x100, то ее тупо растянет в квадрат, что не есть гуд.


Добавьте условия проверки размера. Если меньше то не тянем а подкладываем фон, если больше - уменьшаем пропорционально и лишнее обрезаем.
 
 Top
dropoff
Отправлено: 27 Апреля, 2011 - 12:16:03
Post Id



Посетитель


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


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




Zuldek, знать бы как)

Интересует больше возможность загрузки нескольких картинок. Причем их количество изначально не известно.
Т.е. где-то есть константа в которой указывается сколько картинок можно загрузить. И в зависимости от этого выводится столько полей для загрузки, сколько указано в константе.

Хотя тут, наверное, нужно в цикле как-то саму загрузку делать и туда передавать массив с картинками.
 
 Top
ALEN Модератор
Отправлено: 29 Апреля, 2011 - 20:47:56
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




dropoff
Картинка сохраняется только при вызове метода save , например:

PHP:
скопировать код в буфер обмена
  1. $img=new cms_img;
  2. $img->load("image.jpg");
  3. $img->resize(1024,768);
  4. $img->save("image-1024-768.jpg");
  5. $img->resize(800,600);
  6. $img->save("image-800-600.jpg");
  7. $img->resize(180,150);
  8. $img->save("image-180-150.jpg");
  9. $img->destroy();


В результате как уже понятно, мы не переписываем существующее изображение, но из него создаем еще 3 картинки. Думаю все должно быть понятно.
(Добавление)
Если нужно аккуратно изменить размер изображения то можно сделать это в процентном соотношении:

В данном случае класс сделает картинку с 90% размерами, т.е. если картинка 100 на 100, то на выходе будет 90 на 90

Кстати для новости я рекомендовал бы в некоторых случаях делать кэширование картинки, чтоб не тратить много физической памяти. Так же это позволит на лету изменять размеры изображений, на сервере хранить придется только оригинал. Данный способ подойдет, если ваш сайт не сильно нагружен и не имеет несколько тысяч одновременных посещений (не в день, а одновременно).
(Добавление)
И еще, картинку не растянет в квадрат, а просто красиво обрежет лишнее, рекомендую попробовать, тем более, что класс поддерживает сразу вывод результата на экран.
 
 Top
dropoff
Отправлено: 29 Апреля, 2011 - 22:23:09
Post Id



Посетитель


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


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




Спасибо за подсказку с несколькими копиями. То, что нужно как раз.

А вот ресайз с процентами не очень подходит. Изначальный размер картинки может же быть и 3000x1000px or 500x800px. и пропорции будут ну совсем разные, если ставить проценты.
пока как вариант ставлю только обрезание по ширине. Ибо перед загрузкой обрабатывать каждую картинку и делать им нужные размеры - оч накладно по времени.

Для новостей то в принципе и одной картинке хватит.
А вот для каталога товаров нет. там много картинок я сделал и все разных размеров. точнее разных пропорций. некоторые будут 300на150px, некоторые мелкие квадратами 100на100, а некоторые 600на800.
хотя тут можно какой-то кроп прикрутить, чтобы самому при добавлении их резать. правда геморно оч.
 
 Top
ALEN Модератор
Отправлено: 01 Мая, 2011 - 10:09:27
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




Я на сайтах с невысокой нагрузкой генерирую картинки на лету...
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB