¡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!
These are truly fantastic ideas in regarding blogging.
You have touched some pleasant factors here.
Any way keep up wrinting.
Muchas gracias Daryl, por comentarios como este me encanta continuar haciendo lo que hago.
What quite good topic
Muchas gracias, me alegra que te guste