Añadiendo imágenes a campos MediaSet en Business Central: Convertir y enriquecer tu contenido



Fecha :

Categorías : Base64   TiposDeCampos   Business_Central


¡Hola a todos! Espero que hayáis empezado bien la semana.


Hoy quiero compartir con vosotros un proceso sencillo pero muy útil: cómo convertir una imagen en Base64 y luego añadirla a un campo de tipo MediaSet.

Si queréis obtener más información sobre este campo, podéis consultar la documentación oficial en este enlace.


Bueno, después de esta breve explicación, ¡pongámonos manos a la obra! 😆


Para empezar, vamos a crear una codeunit con dos funciones.

La primera función se encargará de subir la imagen y convertirla en Base64.

El código para ello sería el siguiente:


    procedure Upload()
    var
        Base64Convert: Codeunit "Base64 Convert";
        DocInStream: InStream;
        FileName: Text;
        ValueText: Text;
    begin
        if not UploadIntoStream('', '', '', FileName, DocInStream) then
            exit;

        Clear(Base64Convert);
        ValueText := Base64Convert.ToBase64(DocInStream);
        Base64ToPicture(ValueText);
    end;



En este código, hemos utilizado la codeunit “Base64 Convert” para convertir lo que hemos subido con la función “UploadIntoStream”.

Después, hemos utilizado un “InStream” para transformarlo en Base64 y finalmente llamamos a la función “Base64ToPicture”.



Ahora, pasemos a la función “Base64ToPicture”. En esta función, vamos a convertir el texto en formato Base64 y lo añadiremos a un campo de tipo MediaSet, en este caso el campo “Picture” de la tabla “Item”.

Aquí está el código correspondiente:


    procedure Base64ToPicture(Base64Text: Text)
    var
        Item: Record Item;
        Base64Convert: Codeunit "Base64 Convert";
        TempBlob: Codeunit "Temp Blob";
        DocOutStream: OutStream;
        DocInStream: InStream;
    begin
        Clear(TempBlob);
        Clear(Base64Convert);
        Clear(DocOutStream);
        Clear(DocInStream);

        TempBlob.CreateOutStream(DocOutStream);
        Base64Convert.FromBase64(Base64Text, DocOutStream);
        TempBlob.CreateInStream(DocInStream);

        Item.FindFirst();
        Clear(Item.Picture);
        Item.Picture.ImportStream(DocInStream, 'sign', 'image/jpeg');
        Item.Modify();
    end;



En este código, observamos que convertimos el texto de formato Base64 a un “InStream” pasando por un “OutStream”.

Es importante mencionar que en la función anterior teníamos directamente el “InStream”, pero de esta forma también os muestro cómo convertir de un “OutStream” a un “InStream”.


Una vez que tenemos el “InStream” preparado, inicializamos la variable “Item” y luego importamos el “InStream” dentro del campo “Picture” de la tabla “Item”.

Es crucial especificar el tipo de imagen, en este caso “image/jpeg”, para que pueda ser correctamente leída posteriormente en la página de productos.



En resumen, hemos explorado cómo convertir una imagen en Base64 y agregarla a un campo de tipo MediaSet en Business Central. A través del código proporcionado y los pasos explicados, has aprendido a realizar esta tarea de manera efectiva. Ahora podrás aprovechar esta funcionalidad y mejorar tus proyectos al manipular imágenes de manera más eficiente. ¡No dudes en aplicar estos conocimientos y seguir explorando las posibilidades de Business Central!



Como siempre, podréis ver el ejemplo entero en el Link


¡Y eso es todo! Espero que esta explicación y el código os hayan sido de ayuda. Si tenéis algún comentario o pregunta, no dudéis en hacerla. ¡Hasta la próxima!