Научите пожалуйста определять размер картинки

Тема в разделе "Lotus - Программирование", создана пользователем Gandliar, 16 фев 2011.

  1. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Привет!

    К документу пристегнут файл с картинкой, обычно *.jpeg или *.gif

    Необходимо определить его width и height :)

    Помогите плиз.
     
  2. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">как-то так</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    Option Declare
    Uselsx "*javacon"

    Class Dimension
    Private t_width As Integer
    Private t_height As Integer
    Sub new( i_width As Integer , i_height As Integer)
    t_width = i_width
    t_height = i_height
    End Sub
    Public Function getWidth() As Integer
    getWidth = t_width
    End Function
    Public Function getHeight() As Integer
    getHeight = t_height
    End Function
    End Class

    Function getImageDimension( filepath As String ) As Dimension
    Dim jSession As New JavaSession()
    Dim toolkit As JAVACLASS
    Set toolkit = jSession.GetClass("java/awt/Toolkit")
    Dim image As JavaObject
    Set image = toolkit.getDefaultToolkit().getImage( filepath )
    Set getImageDimension = New Dimension( image.getWidth() , image.getHeight() )  
    End Function
    Выгрузить аттач на диск во временную папку предлагаю самостоятельно. Рекомендую:
    Код (Text):
    Function getTmpFolder() As String
    Dim jSession As New JavaSession()
    Dim System As JAVACLASS
    Set System = jSession.GetClass("java/lang/System")
    Dim method As JAVAMETHOD
    Set method = System.GetMethod("getProperty" , "(Ljava/lang/String;)Ljava/lang/String;" )
    getTmpFolder = method.Invoke( , "java.io.tmpdir")
    End Function
     
  3. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Спасибо большое, а то уже влез в побайтное чтение файлов картинок :) моя версия заработала, но не элегантно :)

    А с ява-классами просто получается совсем.

    Если нетрудно, подскажите пожалуйста где почитать, про остальные возможности.
    Насколько я понимаю, нужный класс нашелся на машине, так как была установлена ранее java или это стандартный класс винды?
    будет ли такой скрипт работать на сервере и как тут обстоят дела с производительностью, есть ли подводные камни?
     
  4. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Побайтное - это круто. :)
    Угу. После LS, жизнь с явой жизнь покажется раем :)
    Почитать про остальные возможности можно в книжках. Тут как-то обсуждали недавно. Ну и гугл прям-таки завален информацией.
    Пакет java.awt идет в "стандартной" комплектации jre, в т.ч. в реализации jvm от ibm, которая включена в состав lotus domino/notes.
    Т.о. код будет работать везде, где есть domino или notes. В т.ч. на сервере, причем под любой поддерживаемой OS.
    Подводные камни примерно следующие:
    - с хорошей вероятностью нужно дать агенту прав писать на диск, что обычно не очень здорово. подозреваю, что при большом желании это можно обойти, вываливая документ в inmemory dxl, и раскодируя base64 аттача.
    - под linux без установленных иксов, возможно придется подкрутить настройку серверной jvm. что-то типа java.awt.headless = true. Если вдруг вылезет - можно почитать тут
    - если для получения контента файла используеца EmbeddedObject.getInputStream(), то необходимо помнить про
    Т.е. желательно вызвать recycle() у аттача.
    - если файлы большие - возможно придеца поднять JavaMaxHeapSize в notes.ini
    С производительностью все нормально - ls2j поднимается быстрее, чем обычный java агент, т.к. ему не надо инициализировать доминошную сессию.
    Если domino версии 8.5 - то еще шустрее( ибо jvm 1.6 )
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    добавлю, что с жпегами есть и понятие DPI, кот. будет влиять на размер имеджа, при отображении...
    как этот факт не учитывается awt - я не помню (по-моему никак)
    есть и другие методы получения сайза (здесь обсуждалось), а ёще я писал здесь
    и воще, в этом проекте есть агент, кот. сайзы указывает (наскока помню - я делал с выводом DPI)
     
Загрузка...
Похожие Темы - Научите пожалуйста определять
  1. Дайнеко
    Ответов:
    8
    Просмотров:
    2.480
  2. Gandliar
    Ответов:
    0
    Просмотров:
    1.686
  3. Akupaka
    Ответов:
    3
    Просмотров:
    2.543
  4. limbra
    Ответов:
    3
    Просмотров:
    68
  5. uxbmw3w
    Ответов:
    0
    Просмотров:
    89

Поделиться этой страницей