Image watermark es un paquete de flutter para agregar a cualquier imagen textos u otras imágenes como marcas de agua, puedes personalizar la posición de la marca de agua y el color.
Basado en el paquete Image.
Publicado en pub.dev
Agrega texto en el centro de la Imagen como marca de agua, los parametros son la imagen convertida a Uint8List y el texto (String), se retorna una imagen en Uint8List
final watermarkedImg =
await ImageWatermark.addTextWatermark(
imgBytes: imgBytes,
watermarktext: 'watermarkText',
);
final watermarkedImgBytes =
await ImageWatermark.addTextWatermark(
imgBytes: imgBytes, ///Imagen en Uint8List
watermarktext: 'watermarkText', ///texto marca de agua text
color: Colors.white, ///default : Colors.black
);
Cambia la posición de la marca de agua
final watermarkedImg =
await ImageWatermark.addTextWatermark(
imgBytes: imgBytes, ///Imagen en Uint8List
watermarktext: 'watermarkText', ///texto marca de agua
dstX: 20, ///posición de la marca de agua (coordenadas de X)
dstY: 30, ///posición de la marca de agua (coordenadas de Y)
color: Colors.green, ///default : Colors.black
);
Agrega una Imagen como marca de agua en otra Imagen
final watermarkedImgBytes =
await ImageWatermark.addImageWatermark(
originalImageBytes: imgBytes,
waterkmarkImageBytes: watermarkImgByte,
);
final watermarkedImgBytes =
await ImageWatermark.addImageWatermark(
originalImageBytes: imgBytes, //Imagen Principal en Uint8List
waterkmarkImageBytes: imgBytes2, //Imagen marca de agua en Uint8List
imgHeight: 200, //Altura de la imagen marca de agua
imgWidth: 200, //Anchura de la imagen marca de agua
dstY: 400, //posición de la marca de agua (coordenadas de Y)
dstX: 400, //posición de la marca de agua (coordenadas de X)
);
El paquete Image
solo tiene fuentes arial, puedes cambiar la fuente convirtiendo un archivo de formato .ttf en formato .fnt:
-
Descarga tu fuente en formato .ttf.
-
Convierte tu fuente en formato .fnt usando el siguiente sitio.
-
Usa la clase
ImageFont
,readOtherFontZip
si usas el archivo .zip;readOtherFont
si descomprimes el archivo .zip y obtienes los archivos .fnt & .png.
Agrega la fuente en el pubspec.yaml
assets:
- path/to/font.zip
Después usala de la siguiente forma:
final assetFont = await rootBundle.load('path/to/font.zip');
final font = assetFont.buffer.asUint8List(assetFont.offsetInBytes, assetFont.lengthInBytes);
final bitMapFont = ImageFont.readOtherFontZip(font);
...
await ImageWatermark.addTextWatermark(
imgBytes: imgBytes,
font: bitMapFont, /// Font from .zip
watermarkText: 'watermark text',
dstX: 20,
dstY: 40,
)