Проверка файла перед вставкой в Richtext-поле

San40S

Well-known member
15.04.2009
69
0
#1
Доброго времени суток!
Значит есть такая задачка... на форме есть два RichText-поля (SFile и SSample). в SFile будет вставляться файл картинки, а в SSample - типа превью этой картинки.
Так вот, как вставить саму картинку в поле - проблем вроде нет, но необходимо еще, перед тем как вставить эту картинку, сделать проверочку, а именно:
- чтобы файл был в формате *.jpg;
- чтобы он был с разрешением в 200 dpi;
- чтобы он был в оттенках серого (типа ч/б).

Кто подскажет как такое можно организовать??

З.Ы. Код самой вставки рисунка:
Код:
	Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim mFile As Variant
Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document	
Set rtitem = doc.GetFirstItem("SFile")
If Not rtitem Is Nothing Then Call rtitem.Remove
Set rtitem = New NotesRichTextItem( doc, "SFile" )

mFile = ws.OpenFileDialog(False, "Choose your file", "JPG|*.jpg|JPEG|*.jpeg", "C:\")
If Not Isempty (mFile) Then	
Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", mFile(0))

uidoc.Document.saveOptions = "0"
Call uidoc.Close
uidoc.Document.Form = "Sign"
Set uidoc = ws.EditDocument(True, uidoc.Document, False)
Call uidoc.Document.RemoveItem("SaveOptions")

Call uidoc.GotoField("SSample")
Call uidoc.Import ("JPEG Image", Cstr(mFile(0)))
Else
Exit Sub
End If
З.З.Ы. В ws.OpenFileDialog можно и нужно указать фильтр по JPEG, но если в поле имени файла ввести, например, С:\1.txt (предварительно, чтобы этот файл был на создан), то несмотря ни на какие фильтры - наш файлик 1.txt - будет успешно открыт! :)

В общем нужно организовать проверку перед вставкой... как?
Профи, прошу Ваших советов и рекомендаций!!
 

hosm

* so what *
18.05.2009
2 442
6
#2
.З.Ы. В ws.OpenFileDialog можно и нужно указать фильтр по JPEG, но если в поле имени файла ввести, например, С:\1.txt (предварительно, чтобы этот файл был на создан), то несмотря ни на какие фильтры - наш файлик 1.txt - будет успешно открыт!
OpenFileDialog
This method returns names. It does not open or perform any other action on files.
У тебя сразу после OpenFileDialog есть только имя файла, никто его еще не открывает.
Если хочешь ограничить расширение файла, воспользуйся проверкой расширения StrRightBack(mFile(0), ".")
Если именно на формат, как я поняла - ищи описание формата и читай нужную инфу из файла
( http://www.google.com.ua/search?q=jpeg+header
пример http://forums.cnet.com/5208-6637_102-0.html?threadID=175401)
Может, кто попроще посоветует варианты, полностью готовые к употреблению :)
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#3
как отсекать левые названия - это ваще из "дошкольной практики програмения"
судя по вопросу как анализировать файлы - вы не знаете ;)

гуглевание не модно, у поколения пепси, дайте фсё и сра :)

терь про контент файла

сначала теория...
нек. файлы (графич.) имеют сигнатуру, а нек. - нет...
и анализровать над хедером - задача для истинных индейцев :)

путей у вас несколько:
-использовать консольную утилиту (работает везде)
-использовать java (работает везде)
-использовать КОМу (работает в уиндоуз онли)

терь практика...

консольная утиль (ваще их много)
за вас уже всё сделали, например:
identify test1.jpeg
выдаст
test1.jpeg JPEG 260x151 260x151+0+0 8-bit DirectClass 10.3kb

identify - это утиль из бесплатного пакета imagemagick
под виндоуз (почему-то я не сомневаюсь, что у вас именно оно ;) ) есть её реализация
http://imagemagick.linux-mirror.org/script...ses.php#windows

java
как заюзать java (через бридж): http://www.nsftools.com/tips/NotesTips.htm#ls2jexamples

вот так определить формат:
http://www.exampledepot.com/egs/javax.imageio/DiscType.html

или вот (от настоящих индейцев):
http://kickjava.com/src/imageinfo/ImageInfo.java.htm

и наконец, КОМа
что щас актуально в вянде и какая её версия какой компонент поставляет - не подскажу (где-то есть проги дефолтные, типа имеджвуер от МС, где-то нет)
есть вот такие:
http://forum.script-coding.info/viewtopic.php?id=2846

задейстование из ЛС - подобно васику
 

nvyush

Lotus team
22.04.2009
2 317
0
#5
это всем клиентам ставить еще какую-то утилитку?
Тут, наверно, без холивара - выбирайте уже тогда java :)
Не, ну можно утилитку кинуть на расшаренный сетевой диск — одну на всех. Это если лень с джавой разбираться. Но я вообще-то за джаву.
 

San40S

Well-known member
15.04.2009
69
0
#6
У тебя сразу после OpenFileDialog есть только имя файла, никто его еще не открывает.
Если хочешь ограничить расширение файла, воспользуйся проверкой расширения StrRightBack(mFile(0), ".")
Если именно на формат, как я поняла - ищи описание формата и читай нужную инфу из файла
( http://www.google.com.ua/search?q=jpeg+header
пример http://forums.cnet.com/5208-6637_102-0.html?threadID=175401)
Может, кто попроще посоветует варианты, полностью готовые к употреблению ;)
Проверка расширения это понятно.., меня в большей степени интересует разрешение (я о 200dpi) и "цветность" - оттенки серого.

А вообще мне нравится идея с Java, но я не так уж силен в ней :(
З.Ы. Спасибо за участие в решении вопроса :)
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#8
а какие подробности нужны - код по ссылке
подключение java кода в LS - тоже...
можно и просто на java написать весь агент с передачей ему пути файла (через энвайромент или в доке)
вы начните тему изучать...
выж не предлвагаете мне весь код за вас писать?... :)
 

San40S

Well-known member
15.04.2009
69
0
#9
выж не предлвагаете мне весь код за вас писать?... ;)
Ни в коем случаи ;)

или вот (от настоящих индейцев):
Что есть - "от настоящих индейцев" ??
индейцев - американцев??
индейцев - ну, тип "тупых", что ли?? ))

А теперь ближе к теме..:
Вот по ссылке: http://kickjava.com/src/imageinfo/ImageInfo.java.htm
есть много всякого-такого.. но пока я не совсем въезжаю в букаффки что там написаны :)
Вижу проверки на форматы, на "цветность" и т.д. ... но хотелось бы "вырвать" оттуда только то, что нужно мне, а не все..
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#10
вы читать сначала пробывали ;)
там в коментах всё написано - что вызывать и как...
начиная со строки
31 * Use the class like this:
индейцы - терпиливые, пытливые и мудрые :)