图像水印上的Xamarin.iOS图像

时间:2018-01-30 03:06:42

标签: c# xamarin xamarin.ios

如何使用Xamarin.iOS c#将png图像作为水印添加到更大的图像并将输出保存到设备?

我从here发布的另一个问题中找到了Xamarin.Android版本。

先谢谢!!

1 个答案:

答案 0 :(得分:1)

使用图像上下文,您可以在必要的位置绘制原始图像,然后绘制水印,并从上下文中获取新图像。

ImageContext示例:

var originalImage = UIImage.FromBundle("buymore.jpg");
var watermarkImage = UIImage.FromFile("vs.png");

UIGraphics.BeginImageContextWithOptions(originalImage.Size, true, 1.0f);
originalImage.Draw(CGPoint.Empty);
watermarkImage.Draw(new CGRect(new CGPoint(200, 200), watermarkImage.Size));

var processedImage = UIGraphics.GetImageFromCurrentImageContext();

如果您的原始图像和水印图像尺寸相同,则可以使用CIFilterCISourceOverCompositing)将一个图像“叠加”在另一个图像上(假设您的水印具有白色或Alpha背景)由于速度的原因,这是我的首选方法。

CISourceOverCompositing示例:

UIImage processedimage;
using (var filter = new CISourceOverCompositing())
{
    filter.Image = new CIImage(UIImage.FromBundle("vs.png"));
    filter.BackgroundImage = new CIImage(UIImage.FromBundle("buymore.jpg"));

    processedimage = UIImage.FromImage(filter.OutputImage);
}