Изменение Ширины Вложенной Картинки

imendan

Green Team
22.09.2010
159
4
BIT
0
Доброе время суток, господа! Простите, что спамлю, но ничего не нарыл в паутине по своей проблеме!
На форме есть поле RichText. И в нем хранятся отсканированне файлы. Проблема в том, что у многих пользователей при просмотре формы и печати, вложенная в форму ( в поле RichText ) выходит за рамки. Необходимо программно уменьшить масштаб картинки. Т.е. изменить параметр Scaling (width, height) в %. Помогите, плиз!
:lol:
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
выгружать в DXL, менять тег, загружать обратно
 
S

Svetlanika

Вот здесь есть библиотека EmbeddedImage. С ее помощью какраз можно изменять картинки:
The EmbeddedImage library processes a Notes document (or a Form or related design element) and retrieves a list of the embedded images in the rich text fields or form body. You can then work with these images; retrieve the binary image data, determine the dimensions, adjust the scaling, or replace them with graphics copied from elsewhere.
 

imendan

Green Team
22.09.2010
159
4
BIT
0
выгружать в DXL, менять тег, загружать обратно

Эх, сколько бьюсь уже что-то не получается. Сделал таким образом. Выгрузил в DXL документ. Сохранил в xml. Вручную поменял некоторые поля в xml-ке. Загружаю, вижу изменения. Теперь пытаюсь поменять атрибут Width у вложенной картинки в xml-ке. Сохраняю в xml-ке. Загружаю обратно. Не работает :( . Народ помогите, ПУЛИИИИЗ!!!
Вот пример кода вызываемого агентом (который тупо берет готовый xml - и вгружает его в документ):

Sub Initialize
Dim stream As NotesStream
Dim session As New NotesSession
Dim db As NotesDatabase
Dim filename As String
Set db = session.CurrentDatabase
Set stream = session.CreateStream

Set stream = session.CreateStream
filename$ = "C:\Documents and Settings\galiyev\Мои документы\3archin.xml"

If Not stream.Open(filename$) Then
MessageBox "Cannot open " & filename$,, "Error"
Exit Sub
End If

Dim importer As NotesDXLImporter
Set importer = session.CreateDXLImporter(stream, db)
importer.DocumentImportOption = DXLIMPORTOPTION_UPDATE_ELSE_IGNORE
importer.ReplicaRequiredForReplaceOrUpdate = False
Call importer.Process
End Sub
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
для начала - выгрузить не масштабированный DXL, затем - поменять масштаб и тоже выгрузить, сравнить...
вот пример:
-оригинал
<picture height='127px' width='280px'><gif originalformat='notesbitmap'>
-масштаб 50%
<picture height='127px' width='280px' scaledheight='0.6667in'
scaledwidth='1.4583in'><gif originalformat='notesbitmap'>

для изменения реального размера:
-выгрузить (с опцией GIF)
-декодировать из base64 (соответ. картинке тег)
-масштабировать (куча кода на джава)
-вложить в тег
-загрузить
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
Вот здесь есть библиотека EmbeddedImage. С ее помощью какраз можно изменять картинки:
The EmbeddedImage library processes a Notes document (or a Form or related design element) and retrieves a list of the embedded images in the rich text fields or form body. You can then work with these images; retrieve the binary image data, determine the dimensions, adjust the scaling, or replace them with graphics copied from elsewhere.
всёбы ничего, но есть ряд нюанецов https://codeby.net/threads/35193.html?vi...st&p=168434
 
N

nvyush

??? Я в нокауте huh.gif ! Imike, честно говоря я в ступоре)
Читайте внимательно — куча кода на джаве нужна, если Вы изменяете саму картинку. Если картинка не изменяется, а только изменяется её масштаб, то можно обойтись без джавы. Кстати, и без выгрузки на диск тоже, советую "покурить" XSLT.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
как и сказал nvy много писать не нужно..., я привел результат, для сравнения (что поменять и в каких тегах)
ХСЛТ, для простых случаев можно и не использовать (просто поиском/вставкой), но правильно - именно ХСЛТ (в джава возможны и др. способы)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
выглузить в стрим
подправить нужный тег
загрузить из стрима

всё правильно сверху привели - глядеть что поменялось
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Тоже спрошу:
Что бы пропорционально уменьшить размер inline картинки в richtext, скажем в 5 раз, как расчитать значения scaledheight и scaledwidth? Как я понял они всегда разные в зависимости от изначального размера картинки?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
ну типа узнать размер картинки и самому пересчитать, пропорционально

Добавлено: хотя более правильным былобы - уменьшить картинку (если допустимо)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
вроде здесь были темы...
ДХЛ вытаскиваем файл, в java получаем размеры (штатным кодеком), ну и далее по схеме
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
возможно несколько вариантов отработки...
  • нативный, через ImageMagick (требует установки, если никсовый сервер - нет проблем)
  • java, через imageio .
  • через прямое использование 2D (в java, более ограничено кодеками)
Это то что между тегами <jpeg></jpeg> например?
именно

Добавлено: еще перечисление методов и не использовал, не знаю как она в жизни :)

Добавлено: ну а по форуму - это (там упоминается , его развитие и поддержка вендором закончилась в 2006, требует нативных либ)
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
java, через imageio . Кодеки
Вот это интересно и понятно.

Непонятно только вот что: содержимое между тегами <jpeg></jpeg> ведь не является содержимым файла jpeg, это все нужно как то закодировать и сохранить в файл на диск, только после этого применять изменение размера?
 
T

ty3uk

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

dimat

Well-known member
31.07.2008
508
0
BIT
0
Код:
Тупо декодируете в бинарник
Это base64 decode?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!