Гость
Map
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Фотографии в формах / 17 сообщений из 17, страница 1 из 1
30.08.2017, 15:06
    #39512873
KLAYD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
Всем привет, появилась задача выводить фотки сотрудников в один из разделов, есть некая таблица с полем формата BLOB где собственно хранятся сами фото. Вопрос в том как вывести их в поле на формсах,

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

С изображением производить каких то действий больше не планируется, только надо отображать по некому идентификатору сотрудника.
...
Рейтинг: 0 / 0
30.08.2017, 18:26
    #39512983
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
...
Рейтинг: 0 / 0
30.08.2017, 21:58
    #39513046
mRdUKE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
KLAYD,

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

p.s. лично я, в 10-ых "формсах", для загрузки/отображения BLOB использую handleimage3.jar ,
т.к. Forms and Images : keep the initial quality :
Код: plaintext
1.
2.
3.
4.
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.
 
...
Рейтинг: 0 / 0
31.08.2017, 10:42
    #39513231
KLAYD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
тут ещё другая проблема возникла, похоже что в формсах поле с типом 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(
...
Рейтинг: 0 / 0
31.08.2017, 10:53
    #39513235
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
KLAYD,

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

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

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

4) в Oracle для картинок используется
https://docs.oracle.com/cd/A58617_01/cartridg.804/a55713/img_uses.htm
...
Рейтинг: 0 / 0
31.08.2017, 11:06
    #39513251
mRdUKE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
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
...
Рейтинг: 0 / 0
31.08.2017, 11:15
    #39513260
KLAYD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
rf_mail,

1) формсы 6.0.8.27.0, сама база - 10.2.0.5.0
2-3) с инглишем большие проблемы, отсюда все и беды, большинство хелпов именно на нём
4) а Вы можете допилить функцию, которую я написал выше (если это рабочий вариант и подходит для конвертации фоток из полей с типом BLOB), из за проблем с инглишем не могу понять по ссылке как правильно допилить функцию, а на русском описания пакета ORDSYS.ORDImage не нашёл(
...
Рейтинг: 0 / 0
31.08.2017, 11:17
    #39513261
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
KLAYD,

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

YouTube Video
...
Рейтинг: 0 / 0
31.08.2017, 11:18
    #39513264
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
KLAYD,
https://www.youtube.com/results?search_query=read+image+file+from+oracle+forms
...
Рейтинг: 0 / 0
01.09.2017, 13:36
    #39514081
KLAYD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
Вроде разобрался, теперь следующая проблема, инфа в поле 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) помогите с раскодировкой пожалста)
...
Рейтинг: 0 / 0
01.09.2017, 13:56
    #39514096
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
KLAYDВроде разобрался, теперь следующая проблема, инфа в поле BLOB закодирована в base64, тут на форуме нашёл одну процедурку для раскодировки

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

Найдите другую Работающую процедуру,уважаемый.
...
Рейтинг: 0 / 0
01.09.2017, 15:41
    #39514174
KLAYD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
пока что то не получается найти, пол форума перерыл, фото в зашифрованном виде (dBase64), поле типа BLOB.
...
Рейтинг: 0 / 0
01.09.2017, 16:28
    #39514202
KLAYD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
попробовал так
--------------------
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 вызывает, непонятно почему
...
Рейтинг: 0 / 0
02.09.2017, 13:06
    #39514431
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
KLAYD,

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

PS:
эта ветка форума про формочки, по ним вам дан был исчерпывающий ответ.
...
Рейтинг: 0 / 0
04.09.2017, 18:25
    #39515282
Les
Les
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
В формсах действительно бывает проблема с отображением графики.
Если есть место, то советую добавить еще одно поле в таблице, для преобразованного изображения.
Использовал для решения ORDSYS.ORDImage, все нормально работает, база на десятом Oracle
Процесс перекодирования ресурсоемкий, не советую делать это на лету
...
Рейтинг: 0 / 0
05.09.2017, 20:56
    #39516012
AndrK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
KLAYD,

А длина считанного в base64 и раскодированного буфера разве одинакова?
...
Рейтинг: 0 / 0
18.09.2017, 14:46
    #39522763
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фотографии в формах
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
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Фотографии в формах / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]