* Demo: GRAPHICS_IGS_IMGCONV_DEMO
* Dateiname der Bilddatei zum hochladen
PARAMETERS: p_fname TYPE file_table-filename OBLIGATORY.
* wenn die F4-Hilfe für den Dateinamen aufgerufen wird
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
DATA: lv_rc TYPE i.
DATA: it_files TYPE filetable.
DATA: lv_action TYPE i.
* File-Tabelle leeren, da hier noch alte Einträge von vorherigen Aufrufen drin stehen können
CLEAR: it_files.
* FileOpen-Dialog aufrufen
TRY.
cl_gui_frontend_services=>file_open_dialog( EXPORTING
file_filter = |gif (*.gif)\|*.gif\|{ cl_gui_frontend_services=>filetype_all }|
CHANGING
file_table = it_files
rc = lv_rc
user_action = lv_action ).
IF lv_action = cl_gui_frontend_services=>action_ok.
* wenn Datei ausgewählt wurde
IF lines( it_files ) > 0.
* ersten Tabelleneintrag lesen
p_fname = it_files[ 1 ]-filename.
ENDIF.
ENDIF.
CATCH cx_root INTO DATA(e_text).
MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
START-OF-SELECTION.
TRY.
DATA: lv_filesize TYPE w3param-cont_len.
DATA: lv_filetype TYPE w3param-cont_type.
DATA: it_bin_data TYPE w3mimetabtype.
* Bild auf Appl. Server hochladen (binary)
cl_gui_frontend_services=>gui_upload( EXPORTING
filename = |{ p_fname }|
filetype = 'BIN'
IMPORTING
filelength = lv_filesize
CHANGING
data_tab = it_bin_data ).
* Konverterobjekt erzeugen
DATA(o_conv) = NEW cl_igs_image_converter( ).
* MIME-Typen (Format) für input und output festlegen
o_conv->input = 'image/gif'. " Quellformat ist ein GIF
o_conv->output = 'image/x-ms-bmp'. " Ausgabeformat ist ein BMP
* neue Bildgröße festlegen
* o_conv->height = '100'. " neue Höhe 100
* o_conv->width = '100'. " neue Breite 100
* Bildaten übergeben
o_conv->set_image( blob = it_bin_data
blob_size = lv_filesize ).
* Image konvertieren
o_conv->execute( ).
* Anzahl Ergebnisbilder > 0
IF o_conv->get_image_count( ) > 0.
* Bilddaten im Ausgabeformat holen
o_conv->get_image( IMPORTING
blob = it_bin_data
blob_size = lv_filesize
blob_type = lv_filetype ).
* Image lokal speichern
cl_gui_frontend_services=>gui_download( EXPORTING
filename = 'c:\temp\temp.bmp'
filetype = 'BIN'
bin_filesize = lv_filesize
CHANGING
data_tab = it_bin_data ).
ENDIF.
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.