如何使用Xamarin.Android c#添加另一个较小的图像作为较大图像的水印,并将输出(JPEG/JPG)图像保存到安卓设备的内部/外部存储中。
发布于 2017-08-19 20:06:21
使用Canvas.DrawBitmap,您可以在另一个可变Bitmap的基础上绘制一个Bitmap。Bitmap.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语句被分解成较小的组,以便在我们完成这些语句时处理资源,以减少该进程的总内存消耗……
https://stackoverflow.com/questions/45774523
复制相似问题