|
Фотографии в формах
|
|||
---|---|---|---|
#18+
Всем привет, появилась задача выводить фотки сотрудников в один из разделов, есть некая таблица с полем формата BLOB где собственно хранятся сами фото. Вопрос в том как вывести их в поле на формсах, - с каким типом должно быть поле? Image? - и самое главное как вытащить фото из базы и указать, что оно должно выводится в это поле, с форматом BLOB ранее сталкиваться не приходилось, максимум это загрузка из файла read_image_file('vip.bmp','bmp','ABONENT.IMAGE_VIP'); С изображением производить каких то действий больше не планируется, только надо отображать по некому идентификатору сотрудника. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 15:06 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
KLAYD, KLAYD- с каким типом должно быть поле? Image? Из "стандартных" - "Image", да, или Вы ещё видите варианты? :) KLAYDи самое главное как вытащить фото из базы... Так же, как Вы "вытаскиваете" другие данные в блоке. p.s. лично я, в 10-ых "формсах", для загрузки/отображения BLOB использую handleimage3.jar , т.к. Forms and Images : keep the initial quality : Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 21:58 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
тут ещё другая проблема возникла, похоже что в формсах поле с типом image поддерживает только форматы BMP, CALS, GIF, JFIF, PICT, RAS, TIFF, TPIC. Может быть есть какие то функции/процедуры для перекодировки из одного формата в другой? (фотографии в формате jpeg)? На этом форуме вроде нашёл для этого функцию ------------------------------------------------------- create or replace function convertImage(in_source_bl blob, in_dest_type_tx varchar2 default 'jpeg') return blob is v_source_img ORDSYS.ORDImage; v_dest_img ORDSYS.ORDImage; v_dest_bl blob; begin v_dest_img := ORDSYS.ORDImage(); v_source_img := ORDSYS.ORDImage(in_source_bl); v_source_img.processCopy('fileformat=' || in_dest_type_tx, v_dest_img); v_dest_bl := v_dest_img.getContent(); return v_dest_bl; end convertImage; ----------------------------------------------------- но она у меня не компилится, как то её надо допилить, но не знаю пакета ORDSYS.ORDImage( ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 10:42 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
KLAYD, 1) вы не указали какие у вас формсы.у 6 и 12 разные набор библиотек. 2) скачайте себе справку для Oracle forms - Она очень информативная. я вам выше дал ссылку, нужно просто использовать пример из google. 3) учите английский - справка на американском англицком языке:) 4) в Oracle для картинок используется https://docs.oracle.com/cd/A58617_01/cartridg.804/a55713/img_uses.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 10:53 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
KLAYDтут ещё другая проблема возникла, похоже что в формсах поле с типом image поддерживает только форматы BMP, CALS, GIF, JFIF, PICT, RAS, TIFF, TPIC. Может быть есть какие то функции/процедуры для перекодировки из одного формата в другой? (фотографии в формате jpeg)? Image File Formats JFIF extension: .jpg mime: image/jpeg JFIF is the JPEG File Interchange Format, developed by C-Cube Microsystems for storing JPEG encoded images. The JFIF format is actually just a JPEG data stream with an identifying header and a few enforced conventions. As such, it provides minimal support for anything but the actual image data. By definition, all JFIF files are JPEG compressed, making them less appropriate for some applications, as explained in the description of the JPEG compression format in Image Compression Formats. Oracle Multimedia identifies several distinct image formats as JFIF, including actual JFIF files, non-JFIF pure JPEG data streams, and EXIF files. The last is a JFIF variant produced by digital cameras. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 11:06 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
rf_mail, 1) формсы 6.0.8.27.0, сама база - 10.2.0.5.0 2-3) с инглишем большие проблемы, отсюда все и беды, большинство хелпов именно на нём 4) а Вы можете допилить функцию, которую я написал выше (если это рабочий вариант и подходит для конвертации фоток из полей с типом BLOB), из за проблем с инглишем не могу понять по ссылке как правильно допилить функцию, а на русском описания пакета ORDSYS.ORDImage не нашёл( ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 11:15 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
KLAYD, https://www.youtube.com/results?search_query=read+image+file+from+oracle+forms ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 11:18 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
Вроде разобрался, теперь следующая проблема, инфа в поле BLOB закодирована в base64, тут на форуме нашёл одну процедурку для раскодировки create or replace function Decode_64(p_clob blob) return blob IS l_clob blob; l_len number; l_pos number := 1; l_buffer varchar2(23800); l_amount number := 23800; begin l_len := dbms_lob.getlength(p_clob); dbms_lob.createtemporary(l_clob, true); while l_pos <= l_len loop dbms_lob.read (p_clob, l_amount, l_pos, l_buffer); l_buffer := utl_encode.text_decode(l_buffer, encoding => utl_encode.base64); l_pos := l_pos + l_amount; dbms_lob.writeappend(l_clob, length(l_buffer), l_buffer); end loop; return l_clob; end Decode_64; но она почему то не работает, если фотка больших размеров то ругается что буфер маленький, если фотка маленькая то выводит ошибку ORA-06502.... hex to raw conversion error (скриншот http://prntscr.com/gfrczh) помогите с раскодировкой пожалста) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2017, 13:36 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
KLAYDВроде разобрался, теперь следующая проблема, инфа в поле BLOB закодирована в base64, тут на форуме нашёл одну процедурку для раскодировки (скриншот http://prntscr.com/gfrczh) помогите с раскодировкой пожалста) Найдите другую Работающую процедуру,уважаемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2017, 13:56 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
пока что то не получается найти, пол форума перерыл, фото в зашифрованном виде (dBase64), поле типа BLOB. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2017, 15:41 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
попробовал так -------------------- create or replace function Decode_64(p_clob blob) return blob IS l_clob blob; l_len number; l_pos integer := 1; l_buffer raw(2000); l_amount integer := 2000; begin l_len := dbms_lob.getlength(p_clob); dbms_lob.createtemporary(l_clob, true); while l_pos <= l_len loop dbms_lob.read (p_clob, l_amount, l_pos, l_buffer); l_buffer := utl_encode.base64_decode(l_buffer); l_pos := l_pos + l_amount; dbms_lob.writeappend(l_clob, l_amount, l_buffer); end loop; return l_clob; end Decode_64; -------------------------------------- но почему то ошибку ORA-21560 вызывает, непонятно почему ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2017, 16:28 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
KLAYD, предлагаю без лишних слов. 1) активно пользоваться поиском форума sql.ru и создать новую тему для blob,clob в ветке Oracle 2) ознакомиться с http://www.w3ii.com/ru/plsql/plsql_procedures.html 3) скачать книгу Oracle PL/SQL. Для профессионалов. 6-е изд или купить. PS: эта ветка форума про формочки, по ним вам дан был исчерпывающий ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2017, 13:06 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
В формсах действительно бывает проблема с отображением графики. Если есть место, то советую добавить еще одно поле в таблице, для преобразованного изображения. Использовал для решения ORDSYS.ORDImage, все нормально работает, база на десятом Oracle Процесс перекодирования ресурсоемкий, не советую делать это на лету ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2017, 18:25 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
KLAYD, А длина считанного в base64 и раскодированного буфера разве одинакова? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2017, 20:56 |
|
Фотографии в формах
|
|||
---|---|---|---|
#18+
LesВ формсах действительно бывает проблема с отображением графики. AFAIK В 6-ых client/server формсах разных версий были проблемы с BLOB'ами. Из за этого в системе использовали поля LONG. Они как-то более надежно работали. Так же сталкивался с ситуацией, когда после переноса система + БД с сервера заказчика на сервер в офисе (expdp/impdp), Image Item + BLOB перестали работать (версия Forms 6i, БД одинаковая). Как вылечили, не знаю, занимался не я. С полями типа LONG с таким не сталкивался. Ну и при вставке изображений через Image Item черти что с типом изображения и уровнем сжатия (для JPEG) происходит. Т.ч. я изображение готовил отдельно (C + Image Magic + ORA-FFI), а Image Item только для отображения. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2017, 14:46 |
|
|
start [/forum/topic.php?fid=51&msg=39512983&tid=1877945]: |
0ms |
get settings: |
27ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
391ms |
get tp. blocked users: |
2ms |
others: | 2410ms |
total: | 2911ms |
0 / 0 |