Как отмасштабировать изображение только по ширине?

5 messages Options
Embed this post
Permalink
Michael Krishtopa-2

Как отмасштабировать изображение только по ширине?

Reply Threaded More More options
Print post
Permalink
Не знаю с какой стороны подойти к задаче, может кто подскажет интересные
пути решения...

На сайт загружаются новости (ATNewsItem) с картинками произвольного размера.
На главной странице нужно выводить эти новости и их картинки в размере
200px x YYpx
Размер картинки по высоте может быть любой, но ширина чётко 200px.

Плон при загрузке создаёт несколько экземпляров отмасштабированных
изображений, и они хранятся в объекте новости, но они не так работают
как надо: уменьшается до максимально допустимой та сторона картинки,
которая превышает максимально допустимый размер.

         sizes= {'large'   : (768, 768),
                 'preview' : (400, 400),
                 'mini'    : (200, 200),
                 'thumb'   : (128, 128),
                 'tile'    :  (64, 64),
                 'icon'    :  (32, 32),
                 'listing' :  (16, 16),
                },

Т.е. к примеру есть картика 1000x2000
Выбираю размер для вывода 'mini'.
Плон её ужимает до 100x200
А мне надо чтобы было 200 x 400

Можно было бы при выводе её пережимать через PIL, высчитывая размер по
своему алгоритму, но это скажется на быстродействии...

--~--~---------~--~----~------------~-------~--~----~
Russian Plone Group http://plone.org.ru/
Для отправки сообщений [hidden email]
Новые участники контролируются
Архив и настройки подписки http://groups.google.com/group/plone-ru
-~----------~----~----~----~------~----~------~--~---

Юрий Поляков

Re: Как отмасштабировать изображение только по ширине?

Reply Threaded More More options
Print post
Permalink
  'new_mini'    : (200, 1000),

2009/4/5 Michael Krishtopa <[hidden email]>:

> Не знаю с какой стороны подойти к задаче, может кто подскажет интересные
> пути решения...
>
> На сайт загружаются новости (ATNewsItem) с картинками произвольного размера.
> На главной странице нужно выводить эти новости и их картинки в размере
> 200px x YYpx
> Размер картинки по высоте может быть любой, но ширина чётко 200px.
>
> Плон при загрузке создаёт несколько экземпляров отмасштабированных
> изображений, и они хранятся в объекте новости, но они не так работают
> как надо: уменьшается до максимально допустимой та сторона картинки,
> которая превышает максимально допустимый размер.
>
>         sizes= {'large'   : (768, 768),
>                 'preview' : (400, 400),
>                 'mini'    : (200, 200),
>                 'thumb'   : (128, 128),
>                 'tile'    :  (64, 64),
>                 'icon'    :  (32, 32),
>                 'listing' :  (16, 16),
>                },
>
> Т.е. к примеру есть картика 1000x2000
> Выбираю размер для вывода 'mini'.
> Плон её ужимает до 100x200
> А мне надо чтобы было 200 x 400
>
> Можно было бы при выводе её пережимать через PIL, высчитывая размер по
> своему алгоритму, но это скажется на быстродействии...
>
> >
>



--
  Юрий Поляков
    +7 (916) 806-00-55
    [hidden email]

--~--~---------~--~----~------------~-------~--~----~
Russian Plone Group http://plone.org.ru/
Для отправки сообщений [hidden email]
Новые участники контролируются
Архив и настройки подписки http://groups.google.com/group/plone-ru
-~----------~----~----~----~------~----~------~--~---

Denys Mishunov

Re: Как отмасштабировать изображение только по ширине?

Reply Threaded More More options
Print post
Permalink
In reply to this post by Michael Krishtopa-2

On Apr 5, 2009, at 4:26 PM, Michael Krishtopa wrote:

> Плон её ужимает до 100x200
> А мне надо чтобы было 200 x 400

Ставишь  plone.app.imaging (http://pypi.python.org/pypi/plone.app.
imaging) и добавляешь новый размер или  
правишь существующий через новый  
конфиглет в панели управления.
После изменений или добавлений в  
панель управления данного пакета не  
забыть сходить в ZMI/portal_atct и  
пересоздать все Scale'ы для всех что бы  
все существующие изображения  
применили изменения

Удачи

--
Best regards,
Denys Mishunov
PLONE Design-Skinning-Development

mailto:[hidden email]
IRC: spliter(#plone)






--~--~---------~--~----~------------~-------~--~----~
Russian Plone Group http://plone.org.ru/
Для отправки сообщений [hidden email]
Новые участники контролируются
Архив и настройки подписки http://groups.google.com/group/plone-ru
-~----------~----~----~----~------~----~------~--~---

Юрий Поляков

Re: Как отмасштабировать изображение только по ширине?

Reply Threaded More More options
Print post
Permalink
Это, конечно, удобнее, но на алгоритм расчета размера не влияет :)

2009/4/5 Denys Mishunov <[hidden email]>:

>
> On Apr 5, 2009, at 4:26 PM, Michael Krishtopa wrote:
>
>> Плон её ужимает до 100x200
>> А мне надо чтобы было 200 x 400
>
> Ставишь  plone.app.imaging (http://pypi.python.org/pypi/plone.app.
> imaging) и добавляешь новый размер или
> правишь существующий через новый
> конфиглет в панели управления.
> После изменений или добавлений в
> панель управления данного пакета не
> забыть сходить в ZMI/portal_atct и
> пересоздать все Scale'ы для всех что бы
> все существующие изображения
> применили изменения
>
> Удачи
>
> --
> Best regards,
> Denys Mishunov
> PLONE Design-Skinning-Development
>
> mailto:[hidden email]
> IRC: spliter(#plone)
>
>
>
>
>
>
> >
>



--
  Юрий Поляков
    +7 (916) 806-00-55
    [hidden email]

--~--~---------~--~----~------------~-------~--~----~
Russian Plone Group http://plone.org.ru/
Для отправки сообщений [hidden email]
Новые участники контролируются
Архив и настройки подписки http://groups.google.com/group/plone-ru
-~----------~----~----~----~------~----~------~--~---

Denys Mishunov

Re: Как отмасштабировать изображение только по ширине?

Reply Threaded More More options
Print post
Permalink

On Apr 5, 2009, at 7:32 PM, Юрий Поляков wrote:

> Это, конечно, удобнее, но на алгоритм  
> расчета размера не влияет :)

Несомненно. Тем не менее другого  
легкого способа добавить новый размер  
как предлагаете Вы я не знаю. Более  
того в уже существующий сайт. Более  
того для уже существующих объектов (я  
не беру во внимание возможные monkepatching,  
подклассы и т.д.) И наконец, если Вы  
вводите новый размер это, в данном  
случае, когда речь идет об ATNewsItem,  
подразумевает кастомизацию newsitem_view.pt  
для переключения на вывод нового  
размера. Согласитесь, все это не так же  
не звучит как решение алгоритма  
расчета, а скорее как поиск  
приключений на пятую точку :)

А по сути вопроса - насколько я понимаю,  
для изменения алгоритма ресайза PIL  
можно действительно, как Вы указали,  
Юрий, использовать что-то типа  
'new_mini'    : (200, 1000). Смысл в том, что бы  
высота была задана такой что бы до нее  
было гарантировано дальше ресайзить  
чем ресайзить по ширине.  
Соответственно я бы расширил свой  
ответ дополнением:
        1. Устанавливаете plone.app.imaging
        2. Меняете размер mini (в конфиглите plone.app.imaging - http://localhost:8080/Plone 
/@@imaging-controlpanel) на что-то типа
                mini 200:100000

В таком случае PIL будет, практически  
гарантировано, ужимать до 200px по ширине  
вместо высоты если пользователи  
Вашего сайта не сошли с ума и не  
загружают изображения типа 60000х60000 :)

Надеюсь информация правильная :)  
Специально запускал инстанс что бы  
проверить ;)
--
Best regards,
Denys Mishunov
PLONE Design-Skinning-Development

mailto:[hidden email]
IRC: spliter(#plone)






--~--~---------~--~----~------------~-------~--~----~
Russian Plone Group http://plone.org.ru/
Для отправки сообщений [hidden email]
Новые участники контролируются
Архив и настройки подписки http://groups.google.com/group/plone-ru
-~----------~----~----~----~------~----~------~--~---