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

imendan

Well-known member
22.09.2010
116
0
#1
Доброе время суток, господа! Простите, что спамлю, но ничего не нарыл в паутине по своей проблеме!
На форме есть поле RichText. И в нем хранятся отсканированне файлы. Проблема в том, что у многих пользователей при просмотре формы и печати, вложенная в форму ( в поле RichText ) выходит за рамки. Необходимо программно уменьшить масштаб картинки. Т.е. изменить параметр Scaling (width, height) в %. Помогите, плиз!
:lol:
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#2
выгружать в DXL, менять тег, загружать обратно
 

Svetlanika

New member
21.11.2011
3
0
#3
Вот здесь http://www.openntf.org/internal/home.nsf/r...6257616006C6D64 есть библиотека 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

Well-known member
22.09.2010
116
0
#4
выгружать в 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
6 583
269
#5
для начала - выгрузить не масштабированный 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
6 583
269
#6
Вот здесь http://www.openntf.org/internal/home.nsf/r...6257616006C6D64 есть библиотека 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.
всёбы ничего, но есть ряд нюанецов http://codeby.net/forum/threads/35193.html?vi...st&p=168434
 

nvyush

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#9
как и сказал nvy много писать не нужно..., я привел результат, для сравнения (что поменять и в каких тегах)
ХСЛТ, для простых случаев можно и не использовать (просто поиском/вставкой), но правильно - именно ХСЛТ (в джава возможны и др. способы)
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#10
выглузить в стрим
подправить нужный тег
загрузить из стрима

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

dimat

Lotus team
31.07.2008
516
0
#11
Тоже спрошу:
Что бы пропорционально уменьшить размер inline картинки в richtext, скажем в 5 раз, как расчитать значения scaledheight и scaledwidth? Как я понял они всегда разные в зависимости от изначального размера картинки?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#12
ну типа узнать размер картинки и самому пересчитать, пропорционально

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#14
вроде здесь были темы...
ДХЛ вытаскиваем файл, в java получаем размеры (штатным кодеком), ну и далее по схеме
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#16
возможно несколько вариантов отработки...
Это то что между тегами <jpeg></jpeg> например?
именно

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

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

dimat

Lotus team
31.07.2008
516
0
#17
Вот это интересно и понятно.

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

ty3uk

Well-known member
31.03.2008
170
0
#18
я не знаю что там между тегами, но есть предположение, что это в формате MIME64. преобразования достаточно простые, темболее в джаве. Тупо декодируете в бинарник, получается содержание джепег файла. Дальше, можете сохранять, хотя тупо, лучше прям в джаве передеать на изменения размеров и т.п.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#20