sap abap resize image

merhaba çok uzun bir aradan sonra abap ile ilgili bir paylaşım yapmak istedim. bu yazımda internette arayıp da bulamadığım bir abap kodunu paylaşacağım.

abap ile bir resim dosyasını yeniden boyutlandırmanın (image resize) nasıl yapılacağını anlatacağım. bunu yaparken sap’nin image processor sınıfını kullanacağım. abap image resize için bize gereken sınıf; cl_fxs_image_processor.

aşağıda verdiğim örnekte is_attach-media_resource değişkeninde resmin binary datası bulunmakta. öncelikle oluşturduğumuz objeye resmi ekliyoruz. sonra eklenen resmin boyutlarını buluyoruz. resmin boyut oranını bozmamak için yeni resmin yüksekliği (360) sabitleyip genişliğini hesaplıyoruz. daha sonra resmi yeniden boyutlandırıp yeni oluşan binary datasını çekiyoruz.

buyrun kodlarımız burada;

  DATA: lo_image_processor  TYPE REF TO cl_fxs_image_processor,
        lv_handle           TYPE i,
        lv_converted_data   TYPE xstring,
        lv_orig_width       TYPE i,
        lv_orig_height      TYPE i,
        lv_width            TYPE i,
        lv_height           TYPE i.
 
 
  CREATE OBJECT lo_image_processor TYPE cl_fxs_image_processor.
 
  TRY.
      CALL METHOD lo_image_processor->add_image
        EXPORTING
          iv_data       = is_attach-media_resource
*         iv_image_name = lv_file_name
        RECEIVING
          rv_handle     = lv_handle.
 
      lv_width = 640.
      lv_height = 360.
 
      CALL METHOD lo_image_processor->get_info
        EXPORTING
          iv_handle   = lv_handle
        IMPORTING
*         ev_mimetype =
          ev_xres     = lv_orig_width
          ev_yres     = lv_orig_height
*         ev_xdpi     =
*         ev_ydpi     =
*         ev_bitdepth =
        .
 
      lv_width = lv_height * lv_orig_width / lv_orig_height.
 
      CALL METHOD lo_image_processor->resize
        EXPORTING
          iv_handle = lv_handle
          iv_xres   = lv_width
          iv_yres   = lv_height.
 
      CALL METHOD lo_image_processor->get_image
        EXPORTING
          iv_handle  = lv_handle
        RECEIVING
          rv_xstring = lv_converted_data.
 
    CATCH cx_fxs_image_unsupported .
      lv_converted_data = is_attach-media_resource.
    CATCH cx_sy_range_out_of_bounds .
      lv_converted_data = is_attach-media_resource.
  ENDTRY.