![](/assets/img/posts/agregar-imagen-en-base64-a-campo-mediaset/imagen01.jpg)
¡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!