给UIImage添加蒙版

http://stackoverflow.com/questions/17448102/ios-masking-an-image-keeping-retina-scale-factor-in-account

I want to mask an image by passing another image as mask. I am able to mask the image but the resulting image doesn‘t look good. It is jagged at borders.

I guess the problem is related to retina graphics. The scale property for the two images are different as:

  1. The image from which I want to mask has a scale value 1. This image generally has a resolution greater than 1000x1000 pixels.
  2. The image according to which I want the resulting image(image having black and white colors only) has scale value 2. This image is generally of resolution 300x300 pixels.

The resulting image has a scale value of 1.

The code I am using is:

+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {

CGImageRef maskRef = maskImage.CGImage;

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), NULL, false);

CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
CGImageRelease(mask);
UIImage *maskedImage = [UIImage imageWithCGImage:masked ];
CGImageRelease(masked);
return maskedImage;
}

How can I get a masked image which follows retina scale?

时间: 2024-12-07 05:56:23

给UIImage添加蒙版的相关文章

iOS给UIimage添加圆角的两种方式

众所周知,给图片添加圆角有CALayer的cornerRadius, 比如: 最直接的方法: imgView.layer.cornerRadius1=110; imgView.clipsToBounds = YES; 这事离屏渲染 (off - screen - rendering), 是很消耗性能的:有很多公司面试的时候会问到,你怎么将图片设置圆角,如果你 只回答了这个方法,那么很遗憾,没有加分. 下面我介绍一种更好的方法: #import "Bys.h" @implementati

HTML六边形蒙版的思路

前几天逛网页的时候偶然发现了个六边形的蒙版效果(其实是逛DNF官网看到的),今儿个突发奇想还原一个六边形 其实最开始做六边形我的思路是使用::before和::after 1 .box2{ 2 width: 400px; 3 height: 400px; 4 border: 1px solid black; 5 position: relative; 6 } 7 .six4{ 8 width: 100px; 9 height: 173px; 10 position: absolute; 11 t

UIImageView添加圆角

最直接的方法就是使用如下属性设置: 1 2 3 imgView.layer.cornerRadius = 10; // 这一行代码是很消耗性能的 imgView.clipsToBounds = YES; **这是离屏渲染(off-screen-rendering),消耗性能的** 给UIImage添加生成圆角图片的扩展API:这是on-screen-rendering 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - (UIImage *)imageWithCorner

Photoshop入门教程(七):蒙版

学习心得:蒙版在Photoshop中也是很常用的,学会使用蒙版,可以提高图像处理能力,并且可以保护原片不被破坏,建议多使用一些蒙版. 蒙板是灰度的,是将不同灰度色值转化为不同的透明度,并作用到它所在的图层,使图层不同部位透明度产生相应的变化.黑色为完全透明,白色为完全不透明.把蒙版比喻成一层雾气盖在玻璃上.雾气越厚,窗外什么也不能看见,只有白茫茫一片(表示蒙板上填充白色);但任意擦掉玻璃上一个位置的雾气,那个位置就能清晰地看到外面(表示蒙板上填充黑色);那么如果擦不干净,就只能隐约看到外面咯(表

Swift - 给图片添加滤镜效果(棕褐色老照片滤镜,黑白滤镜)

Core Image是一个强大的滤镜处理框架.它除了可以直接给图片添加各种内置滤镜,还能精确地修改鲜艳程度, 色泽, 曝光等,下面通过两个样例演示如何给UIImage添加滤镜. 1,棕褐色滤镜  - CISepiaTone 这个有点复古老照片发黄的效果(上面一张是原图). 扩展UIImage类,添加棕褐色滤镜: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import UIKit //--- UIImageFilterExtensi

用Fragment做蒙版来进行一个初始教学提示的效果

在android 软件第一次使用的时候,一般会在当前的界面上做一个灰色的蒙版,上面有显示的一些提醒性质的教学文字或者图案. 我想的是当前界面上蒙上一个 Fragment 把提示信息也放在Fragment上. 这是效果图.后面附上demo源码. 具体就是在activity成功启动之后.画出activity的view之后.这个不能在生命周期进行判断.我尝试的是用Handler去不断postDelay查看view是否被画出.即view的width > 0. 然后用代码动态的把这个蒙版Fragment加

[UIImage resizableImageWithCapInsets:]

[UIImage resizableImageWithCapInsets:]使用注意 转自:http://www.cnblogs.com/scorpiozj/p/3302270.html 最近在sae上搭建了个wp,因为深感自己前端的东西缺乏,所以想依次为契机,学习一下.本文是从个人的sae版wp转载过来. 原文见此. 本篇也是在实现微博过程中遇到的问题.原先以为很简单的东西,到了实际做的时候,才发现这里出错那里不对.浪费很多时间,究根结底,还是没有弄清楚文档. 在iOS5, UIImage添加

UIImageView(UIImage)的那些细节

1.设置动画 1 // 1)添加imageView 2 UIImageView *imageView = [[UIImageView alloc] 3 initWithFrame:self.bounds]; 4 // 2)动画照片数组 5 NSMutableArray*arrM = [NSMutableArrayarray]; 6 for (inti = 1; i < 9;i++) { 7 UIImage *image = [UIImage imageNamed:[NSString string

关于iOS应用管理之九宫格的坐标计算以及与UIScrollView的结合

关于九宫格的布局以及坐标的计算,对于大多数的iOS初学者甚至有一定能力的学者来说都是一大难题,在此写者通过自己的开发经验以及多次应用,把自己的所学所得分享给大家,就通过应用管理来进行浅谈一二.     1. 功能分析:通过九宫格的样式添加相应的应用:当点击“下载”按钮时会执行相应的操作 2.实现步骤:1>.首先加载相应的应用信息:2>.根据应用的个数添加相对应的view:3>.实现按钮的点击事件,完成相应的后续操作 分析:格局布局的规律,每一个UIView的x坐标 和 y坐标与布局的行列