大佬教程收集整理的这篇文章主要介绍了iphone – Quartz:获取两个图像的差异图像,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以基本上我想得到这两个图像的差异图像,即
我正在寻找基于Core Graphics技术的解决方案,请不要建议在循环中运行所有像素.我确实关心性能.
由于我是Quartz的新手,我想知道是否可以通过面具实现这一目标?
或者请建议另一种方法!
更新使用差异混合模式
实际上,如果我使用差异混合模式,它不能解决我的问题,因为它不能保持像素的正确颜色.如果我将差异混合模式应用于2张以上的图像,我会得到以下内容
这似乎有像素的反色,然后如果我反转它我得到跟随
这实际上不是我想要的,因为像素颜色完全不同
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,请注明来意。