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]
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
EuGen
Сейчас проставил видимость, теперь думаю отпадут вопросы с названием методов)))
А фантазии в названия не хватает, поэтому не сильно привередлив в выборе имен, которые будут техническими и не доступными вне класса.
EuGen
Отправлено: 14 Марта, 2011 - 11:11:43
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Да, про видимость вижу. Я лишь заметил, что назания методов никак не связаны с областью их видимости, правила же единого стиля желательно применять вне зависимости от этой видимости.
ALEN пишет:
А фантазии в названия не хватает, поэтому не сильно привередлив в выборе имен, которые будут техническими и не доступными вне класса.
- вот это зря, ведь Вы можете потом через полгода-год заглянуть в код, и разобраться будет сложно. Да, здесь класс простой и одноуровневый (ничто ниоткуда не наследуется, не переопределяется и т.п.), но для более сложных это может вызвать трудности.
А вообще класс полезен. Я, конечно, свои использую, но посмотреть всегда любопытно.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
ALEN
Отправлено: 14 Марта, 2011 - 11:23:17
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
EuGen пишет:
вот это зря
Я работаю над собой)))
ALEN
Отправлено: 17 Марта, 2011 - 17:50:03
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
Немного привел класс в порядок, чтоб можно было код читать)))
ALEN
Отправлено: 21 Марта, 2011 - 11:28:19
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
Очередное обновление класса, добавлена загрузка изображения по URL.
Zuldek
Отправлено: 21 Марта, 2011 - 14:52:34
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
к сожалению без пинков не работает ни один из примеров
попробовал, например 6 -
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
ALEN
Отправлено: 21 Марта, 2011 - 16:09:03
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
Zuldek
Код использования можно увидеть?
И еще судя из ошибки, уже заголовки header() пытались отправляться, поэтому и ошибка выводится. Метод output() сам выводит изображение и отправляет необходимые заголовки. (Добавление)
Обновил еще раз класс.
- добавил возможность автоматически при сохранении присоединять разрешения файла
- избавился от лишнего использования PCRE
- добавил метод set_type() для принудительной замены типа изображения
dropoff
Отправлено: 26 Апреля, 2011 - 20:53:23
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
А есть возможность делать сразу несколько копий картинок и клась по разным путям и с разными названиями?
Например если нужно залить 10 картинок.
DlTA
Отправлено: 27 Апреля, 2011 - 00:12:33
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
dropoff пишет:
А есть возможность делать сразу несколько копий картинок и клась по разным путям и с разными названиями?
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
Простите, не точно выразился. После дня голова не варит...
Например нужно к новости загрузить картинку в разных размерах.
Т.е.
большая - 600x300 (она как исходное изображение)
средняя - 300x150
и мелкая - 100x100
Или грузить 10 или 15 картинок и так же в несколько копий с разными размерами?
Если картинка меньшего размера который указан в загрузке, то ее растягиваем и она становится уродцем.
Если картинка размером 100x50, а при загрузке указаны размеры 100x100, то ее тупо растянет в квадрат, что не есть гуд.
Zuldek
Отправлено: 27 Апреля, 2011 - 10:52:35
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
dropoff пишет:
Простите, не точно выразился. После дня голова не варит...
Например нужно к новости загрузить картинку в разных размерах.
Т.е.
большая - 600x300 (она как исходное изображение)
средняя - 300x150
и мелкая - 100x100
Или грузить 10 или 15 картинок и так же в несколько копий с разными размерами?
Если картинка меньшего размера который указан в загрузке, то ее растягиваем и она становится уродцем.
Если картинка размером 100x50, а при загрузке указаны размеры 100x100, то ее тупо растянет в квадрат, что не есть гуд.
Добавьте условия проверки размера. Если меньше то не тянем а подкладываем фон, если больше - уменьшаем пропорционально и лишнее обрезаем.
dropoff
Отправлено: 27 Апреля, 2011 - 12:16:03
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
Zuldek, знать бы как)
Интересует больше возможность загрузки нескольких картинок. Причем их количество изначально не известно.
Т.е. где-то есть константа в которой указывается сколько картинок можно загрузить. И в зависимости от этого выводится столько полей для загрузки, сколько указано в константе.
Хотя тут, наверное, нужно в цикле как-то саму загрузку делать и туда передавать массив с картинками.
ALEN
Отправлено: 29 Апреля, 2011 - 20:47:56
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
dropoff
Картинка сохраняется только при вызове метода save , например:
В результате как уже понятно, мы не переписываем существующее изображение, но из него создаем еще 3 картинки. Думаю все должно быть понятно. (Добавление)
Если нужно аккуратно изменить размер изображения то можно сделать это в процентном соотношении:
В данном случае класс сделает картинку с 90% размерами, т.е. если картинка 100 на 100, то на выходе будет 90 на 90
Кстати для новости я рекомендовал бы в некоторых случаях делать кэширование картинки, чтоб не тратить много физической памяти. Так же это позволит на лету изменять размеры изображений, на сервере хранить придется только оригинал. Данный способ подойдет, если ваш сайт не сильно нагружен и не имеет несколько тысяч одновременных посещений (не в день, а одновременно). (Добавление)
И еще, картинку не растянет в квадрат, а просто красиво обрежет лишнее, рекомендую попробовать, тем более, что класс поддерживает сразу вывод результата на экран.
dropoff
Отправлено: 29 Апреля, 2011 - 22:23:09
Посетитель
Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010
Помог: 0 раз(а)
Спасибо за подсказку с несколькими копиями. То, что нужно как раз.
А вот ресайз с процентами не очень подходит. Изначальный размер картинки может же быть и 3000x1000px or 500x800px. и пропорции будут ну совсем разные, если ставить проценты.
пока как вариант ставлю только обрезание по ширине. Ибо перед загрузкой обрабатывать каждую картинку и делать им нужные размеры - оч накладно по времени.
Для новостей то в принципе и одной картинке хватит.
А вот для каталога товаров нет. там много картинок я сделал и все разных размеров. точнее разных пропорций. некоторые будут 300на150px, некоторые мелкие квадратами 100на100, а некоторые 600на800.
хотя тут можно какой-то кроп прикрутить, чтобы самому при добавлении их резать. правда геморно оч.
ALEN
Отправлено: 01 Мая, 2011 - 10:09:27
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
Я на сайтах с невысокой нагрузкой генерирую картинки на лету...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.