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. |