HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – Quartz:获取两个图像的差异图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我跟随两个图像,背景可能是完全不同的图像,例如不仅仅是纯色.

 

所以基本上我想得到这两个图像的差异图像,即

我正在寻找基于Core Graphics技术的解决方案,请不要建议在循环中运行所有像素.我确实关心性能.

由于我是Quartz的新手,我想知道是否可以通过面具实现这一目标?
或者请建议另一种方法

更新使用差异混合模式
实际上,如果我使用差异混合模式,它不能解决我的问题,因为它不能保持像素的正确颜色.如果我将差异混合模式应用于2张以上的图像,我会得到以下内容

这似乎有像素的反色,然后如果我反转它我得到跟随

这实际上不是我想要的,因为像素颜色完全不同

解决方法

您可以使用在Core Graphics中混合任何绘图

CGContextSetBlendMode(kCGBlendModeDifferencE);

通过绘制第一个图像,然后将混合模式设置为差异并绘制第二个图像,您将获得差异(正如我在评论中所建议的那样).这会为您提供倒置图像(如更新问题中所示).要反转图像,您可以使用白色填充相同的矩形(因为混合模式仍然设置为“差异”).

CGContextSetRGBFillColor(context,1.0,1.0);
CGContextFillRect(context,framE);

完成所有这些操作的示例代码(在drawRect :)中如下所示.

CGContextRef context = UIGraphicsGetCurrentContext();

// Your two images
CGImageRef img1 = [[UIImage imagenamed:@"Ygsvt.png"] CGImage];
CGImageRef img2 = [[UIImage imagenamed:@"ay5DB.png"] CGImage];

// Some arbitrary frame
CGRect frame = CGRectMake(30,30,100,100);

// Invert the coordinates to not draw upside down
CGContextTranslateCTM(context,frame.size.height);
CGContextScaleCTM(context,-1.0);

// Draw original image
CGContextDrawImage(context,frame,img1);

// Draw the second image using difference blend more over the first
CGContextSetBlendMode(context,kCGBlendModeDifferencE);
CGContextDrawImage(context,img2);

// Fill the same rect with white color to invert 
// (still difference blend modE)
CGContextSetRGBFillColor(context,framE);

大佬总结

以上是大佬教程为你收集整理的iphone – Quartz:获取两个图像的差异图像全部内容,希望文章能够帮你解决iphone – Quartz:获取两个图像的差异图像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。