Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Forms Новый топик    Ответить
 Фотографии в формах  [new]
KLAYD
Member

Откуда:
Сообщений: 36
Всем привет, появилась задача выводить фотки сотрудников в один из разделов, есть некая таблица с полем формата BLOB где собственно хранятся сами фото. Вопрос в том как вывести их в поле на формсах,

- с каким типом должно быть поле? Image?
- и самое главное как вытащить фото из базы и указать, что оно должно выводится в это поле, с форматом BLOB ранее сталкиваться не приходилось, максимум это загрузка из файла read_image_file('vip.bmp','bmp','ABONENT.IMAGE_VIP');

С изображением производить каких то действий больше не планируется, только надо отображать по некому идентификатору сотрудника.
30 авг 17, 15:06    [20759045]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
rf_mail
Member

Откуда:
Сообщений: 44
KLAYD,
[url]https://www.google.ru/search?q=oracle forms image&oq=oracle forms image&aqs=chrome..69i57j0l5.8178j0j7&sourceid=chrome&ie=UTF-8[/url]
30 авг 17, 18:26    [20759734]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
mRdUKE
Member

Откуда: ТЛТ
Сообщений: 422
KLAYD,

KLAYD
- с каким типом должно быть поле? Image?
Из "стандартных" - "Image", да, или Вы ещё видите варианты? :)
KLAYD
и самое главное как вытащить фото из базы...
Так же, как Вы "вытаскиваете" другие данные в блоке.

p.s. лично я, в 10-ых "формсах", для загрузки/отображения BLOB использую handleimage3.jar,
т.к. Forms and Images : keep the initial quality:
+
When you load an image within Forms with the Read_Image_File() built-in, you can notice a certain lack of quality, both in the Forms Image item display quality and in the real information stored in the blob column.
The image seems to be compressed before it is stored in the database. This compression rate is between 25 and 50% !
This Java Bean allows to load images from a file, then store them in the database.
Картинка с другого сайта.
30 авг 17, 21:58    [20760059]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
KLAYD
Member

Откуда:
Сообщений: 36
тут ещё другая проблема возникла, похоже что в формсах поле с типом 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 авг 17, 10:42    [20760950]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
rf_mail
Member

Откуда:
Сообщений: 44
KLAYD,

1) вы не указали какие у вас формсы.у 6 и 12 разные набор библиотек.

2) скачайте себе справку для Oracle forms - Она очень информативная. я вам выше дал ссылку, нужно просто использовать пример из google.

3) учите английский - справка на американском англицком языке:)

4) в Oracle для картинок используется
[url]https://docs.oracle.com/cd/A58617_01/cartridg.804/a55713/img_uses.htm[/url]
31 авг 17, 10:53    [20760995]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
mRdUKE
Member

Откуда: ТЛТ
Сообщений: 422
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.
KLAYD
но она у меня не компилится, как то её надо допилить, но не знаю пакета ORDSYS.ORDImage(
Managing Oracle Multimedia Installations
31 авг 17, 11:06    [20761072]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
KLAYD
Member

Откуда:
Сообщений: 36
rf_mail,

1) формсы 6.0.8.27.0, сама база - 10.2.0.5.0
2-3) с инглишем большие проблемы, отсюда все и беды, большинство хелпов именно на нём
4) а Вы можете допилить функцию, которую я написал выше (если это рабочий вариант и подходит для конвертации фоток из полей с типом BLOB), из за проблем с инглишем не могу понять по ссылке как правильно допилить функцию, а на русском описания пакета ORDSYS.ORDImage не нашёл(
31 авг 17, 11:15    [20761112]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
rf_mail
Member

Откуда:
Сообщений: 44
KLAYD,

чтобы окончательно раскрыть тему.

[url][/url]
31 авг 17, 11:17    [20761119]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
rf_mail
Member

Откуда:
Сообщений: 44
KLAYD,
https://www.youtube.com/results?search_query=read image file from oracle forms
31 авг 17, 11:18    [20761125]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
KLAYD
Member

Откуда:
Сообщений: 36
Вроде разобрался, теперь следующая проблема, инфа в поле 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) помогите с раскодировкой пожалста)
1 сен 17, 13:36    [20764475]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
rf_mail
Member

Откуда:
Сообщений: 44
KLAYD
Вроде разобрался, теперь следующая проблема, инфа в поле BLOB закодирована в base64, тут на форуме нашёл одну процедурку для раскодировки

(скриншот http://prntscr.com/gfrczh) помогите с раскодировкой пожалста)


Найдите другую Работающую процедуру,уважаемый.
1 сен 17, 13:56    [20764542]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
KLAYD
Member

Откуда:
Сообщений: 36
пока что то не получается найти, пол форума перерыл, фото в зашифрованном виде (dBase64), поле типа BLOB.
1 сен 17, 15:41    [20764967]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
KLAYD
Member

Откуда:
Сообщений: 36
попробовал так
--------------------
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 вызывает, непонятно почему
1 сен 17, 16:28    [20765110]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
rf_mail
Member

Откуда:
Сообщений: 44
KLAYD,

предлагаю без лишних слов.
1) активно пользоваться поиском форума sql.ru и создать новую тему для blob,clob в ветке Oracle
2) ознакомиться с [url=]http://www.w3ii.com/ru/plsql/plsql_procedures.html[/url]
3) скачать книгу Oracle PL/SQL. Для профессионалов. 6-е изд или купить.

PS:
эта ветка форума про формочки, по ним вам дан был исчерпывающий ответ.
2 сен 17, 13:06    [20766655]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
Les
Member

Откуда: Москва
Сообщений: 434
В формсах действительно бывает проблема с отображением графики.
Если есть место, то советую добавить еще одно поле в таблице, для преобразованного изображения.
Использовал для решения ORDSYS.ORDImage, все нормально работает, база на десятом Oracle
Процесс перекодирования ресурсоемкий, не советую делать это на лету
4 сен 17, 18:25    [20770789]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
AndrK
Member

Откуда: Златоуст
Сообщений: 408
KLAYD,

А длина считанного в base64 и раскодированного буфера разве одинакова?
5 сен 17, 20:56    [20773911]     Ответить | Цитировать Сообщить модератору
 Re: Фотографии в формах  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5968
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 сен 17, 14:46    [20803589]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Forms Ответить