Опознать картинку

Тема в разделе "Lotus - Программирование", создана пользователем newlord, 23 апр 2009.

  1. newlord

    newlord Гость

    Люди, как в LS можно узнать вставлена картинка в тело документа или нет.
    Метод EmbeddedObjects не подходит, т.к. как я понял картинка оным не является.

    Нужен просто ответ есть картинка или нет.
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Может сразу рублю с плеча, но экспортнуть док в DXL и проверить его на наличие тегов inline картинок.
    Ну или проверка на Item.Text + Item.EmbeddedObjects + Item.Size :(
    Если всё это на QuerySave, то сначала сделать uidoc.Refresh(True).
     
  3. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Смотря какая задача. У нас вставал подобный вопрос, решили просто, по размеру док-та. Так как точно в форме документа, рисунок(фото) мог быть вставлен только в одно поле и только один раз, то отбирали документы по размеру, типа до 10КБ без картинки, выше с картинкой. Может топорово, но для нашей задачи подошло.
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    хм... а в поле можно цеплять что угодно или только картинки?
    Если только картинки то так
    Код (Text):
    If rtitem is Nothing then Goto onerr
    If rtitem.ValueLength<=512 then Goto onerr
     
  5. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Код (Text):
    rtitem.ValueLength<=512
    Т.е. получается что ValueLength > 512 отрабатывает только при наличии картинки в RT и больше ни при каких условиях?
    Что-то мне слабо верится :D
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ну мы поступли как Oksana поле только для картинок или аттачей.
    и прошу прощения... 512 - это в нашем варианте... были нюансы
    вообще думаю должно быть 104 - размер пустого RT поля
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Просто такого типа проверка будет отрабатывать при наличии в поле аттачмента или, например, большого кол-ва текста.
    А нас вродь только inline картинки интересуют.
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    я вот не пойму.... зачем извращаться если можно все упростить?
    Но для начала пусть автор уточнит... в поле может быть только картинка или смесь всего что только можно?
    Если только картинка - то можно воспользоваться RT Lite и выбрать графические данные.
    Или поставить обычное RT поле в секцию с ограниченым доступом (чтоб пользователь не мог в нем править ничего) и написать Hotspot с импортом
    И не нужно никаких DXL

    Если в поле смесь - тут конечно варианты.
    Либо DXL либо два поля. Одно для текста, второе для картинки.
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Смог решить эту проблему только выгрузкой в DXL и поиском тэгов. Для вставленных (не приаттаченных!) картинок EmbeddedObjects ничего не даёт. Оценка размера не помогала - размер полей плавал в таких пределах, что можно было упустить небольшую картинку.
     
  10. newlord

    newlord Гость

    Прошу прощения за задержку. Не ожидал, что развернется такая дисскуссия.
    В поле может быть как обычный текст так и картинка (обычно это принтскрин экрана).

    Често говоря не думал, что это такая проблема. Почему картинка не распознается никакими стандартными средствами?


    Написал про принтскрин и подумал, что можно проверить на размер поля все никак меньше 800Х600 не будет.
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Нам тока затравочку дай!
     
  12. Alexander (Criz)

    Alexander (Criz) Гость

    а как это можно сделать????
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Дело в том, что картинка помещается в другое поле, а собственно в РТ только ссылка на неё. Прирост размера поля небольшой. Кстати, размер пустого РТ и РТлайт разный, более того, размер исходно пустого РТ и РТ "опустошённого" (т.е. в котором была картинка, а потом её удалили) тоже может отличаться! Выход один - выгружать в DXL и искать тэги.

    Обходной путь - обязать юзеров к картинке добавлять текст.
     
  14. newlord

    newlord Гость

    Всем большое спасибо за консультацию
     
  15. newlord

    newlord Гость

    А как вам такой вариант

    On Error 4407 Goto sub1
    Call source.GotoField( "Body" )
    Call source.SelectAll
    Call source.DeselectAll

    Если в поле ничего нет то возвращается ошибка по которой переходим дальше куда нам надо.
    Если в ошибки нет, то проверяем дальше на наличие текста или вложенных объектов, если их нет, то остается только картинка.

    Конечно могут быть варианты с полным набором вложений, но для моих задач этой проверки достаточно.
     
  16. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    Код (Text):
                Set exporter=ses.CreateDXLExporter
    outputer=exporter.Export(mydoc)
    '=
    isRTI=(Instr(1, outputer, "<picture", 5) > 0) Or (Instr(1, outputer, "<object", 5) > 0)
    '=print
    '=
    If isRTI Then ЕСТЬ ИНЛАЙН КАРТИНКА

    '=
    '=
    '=
     
Загрузка...
Похожие Темы - Опознать картинку
  1. alba
    Ответов:
    1
    Просмотров:
    1.849
  2. Dragon108
    Ответов:
    3
    Просмотров:
    1.492
  3. prosto4ok
    Ответов:
    1
    Просмотров:
    3.833
  4. Amfion
    Ответов:
    13
    Просмотров:
    4.728
  5. artemhp
    Ответов:
    1
    Просмотров:
    2.118

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