Xamrin.Android添加图像水印

时间:2017-08-19 17:38:29

标签: xamarin xamarin.android

如何使用Xamarin.Android c#添加另一个较小的图像作为较大图像的水印,并将输出(JPEG / JPG)图像保存到Android设备的内部/外部存储。

1 个答案:

答案 0 :(得分:0)

使用Canvas.DrawBitmap,您可以在另一个可变 Bitmap之上绘制BitmapBitmap.CompressAsync提供了一个允许保存为流的重载(在本例中为FileStream)。

var filename = System.IO.Path.Combine(Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads).ToString(), "filename.png");

Bitmap newBitmap;
using (var aBitmapToApplyWaterMarkTo = await BitmapFactory.DecodeResourceAsync(Resources, Resource.Drawable.Alexina))
using (var waterMarkBitmap = await BitmapFactory.DecodeResourceAsync(Resources, Resource.Drawable.watermark))
{
    newBitmap = aBitmapToApplyWaterMarkTo.Copy(aBitmapToApplyWaterMarkTo.GetConfig(), true);
    using (var canvas = new Canvas(newBitmap))
    {
        canvas.DrawBitmap(waterMarkBitmap, newBitmap.Width - 100, newBitmap.Height - 100, null);
    }
}
using (var fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write))
{
    await newBitmap.CompressAsync(Bitmap.CompressFormat.Png, 100, fileStream);
}
newBitmap.Dispose();

注意:Using语句被分成更小的组以允许在我们完成它们时处理资源,以减少此进程的总内存消耗...