使用 resizableImageWithCapInsets获得想要的图片

很早就用过 resizableImageWithCapInsets 来拉伸图片,然后把得到的图片给一个UIImageView,例如imgView,我们能得到相应的效果,这很完美,大家都喜欢。可是,如果我们把这个UIImageView的image属性传递给别的UIImage时,我们得到的不是UIImageview上展示的效果的image,而是,原来未拉伸之前的 image。那么问题来了,如何获取到拉伸好的图片呢?

这个问题也困扰了我很久,也骂了苹果无数次SB,今天把这个问题解决了,现在把在项目中适用的代码贴出来,有需要的同学自取哈,原理我相信大家都懂的。

UIImage *mask = [UIImage
imageNamed:@"chat_self_bubble"];

CALayer* maskLayer = [CALayer
layer];

maskLayer.frame =
CGRectMake(0, 0, _picView.size.width,
_picView.size.height);

CGSize size =
_picView.frame.size;

if (!model.isSelf) {

mask = [UIImage
imageNamed:@"chat_other_bubble"];

UIImage *resizeImg = [mask
resizableImageWithCapInsets:UIEdgeInsetsMake(16, 10, 2, 2)];

UIGraphicsBeginImageContext(size);

//
绘制改变大小的图片

[resizeImg
drawInRect:CGRectMake(0, 0, size.width, size.height)];

//
从当前context中创建一个改变大小后的图片

UIImage* scaledImage =
UIGraphicsGetImageFromCurrentImageContext();

//
使当前的context出堆栈

UIGraphicsEndImageContext();

maskLayer.contents = (id)[scaledImage
CGImage];

}else{

UIImage *resizeImg = [mask
resizableImageWithCapInsets:UIEdgeInsetsMake(20, 2, 2, 10)];

UIGraphicsBeginImageContext(size);

//
绘制改变大小的图片

[resizeImg
drawInRect:CGRectMake(0, 0, size.width, size.height)];

//
从当前context中创建一个改变大小后的图片

UIImage* scaledImage =
UIGraphicsGetImageFromCurrentImageContext();

//
使当前的context出堆栈

UIGraphicsEndImageContext();

maskLayer.contents = (id)[scaledImage
CGImage];

}

[_picView.layer
setMask:maskLayer];

时间: 2024-10-12 08:40:19

使用 resizableImageWithCapInsets获得想要的图片的相关文章

想控制GIF图片动画播放吗?试试gifffer.js

在线演示:http://www.gbtags.com/gb/demoviewer/3578/c6bec39a-61ae-4017-8e23-e0bc1eeb740f/example|index.html.htm 大家可能都斯通见惯了互联网上普遍使用的GIF图片,但是有没有想过让用户自己尝试控制GIF动画的播放呢?在今天这篇文章中,我们将介绍一个超棒的Javascript小类库 - gifffer.js,它可以帮助你添加控制GIF动画功能,想不想尝试一下? 如何使用? 首先引用JS,如下: <sc

把select的小图标替换成 自己想要的图片

不同的浏览器默认的select的选项图标是不同的,例如: 在chrome中,是这样的: 未点击时    点击时  在Firefox中是这样的: 未点击时  点击时   在IE9中是这样的: 未点击时 点击时  其它浏览器大家可以自己尝试看看select的默认样式 下面开始正式介绍怎么替换: 这是我的html代码: <div> <select id="mySelect"> <option value="bj">北京</opti

如何在网上得到你想要的图片,如logo

比如我们想得到网页:http://www.ahnu.edu.cn/里的安徽师范大学logo,可以这样做: 1.Ctrl+U,便进入了网页源代码页,也可以鼠标右键点"查看网页源代码":在网页源代码页,找到logo链接所在的位置: 2.鼠标左键点击链接,进入图片页:(其实图片右侧还有安徽师范大学以及他的英文表达,这里由于字是白色的,背景也是白色的,被淹没了,实际图片下载下来后,就可以看到字了) 3.鼠标右键点"图片另存为",变得到想要的清晰logo了(同理字和背景融合了

ps怎样选取自己想要的图片部分(二)

上篇文章我们介绍了怎样选取所要的图形.但往往我们实际做项目的时候须要创建一个圆形图标或者椭圆形图标,这样会使得我们的图标相比矩形图标更加美观一些. 那么怎样将一个矩形图标改成圆形图标呢? 首先我们须要借助ps中下面工具: 1.椭圆选框工具(用于选择椭圆或者圆形部分,圆形时需按住shift键同一时候) 2.魔法橡皮擦(用于将选择颜色的部分剔除) 接下来看我们的效果: 首先用椭圆选框工具将圆形图片部分圈出. 然后,反向选择. 接下来,我们要填充反向选择的部分,因为对ps的不熟悉,我们没有找到对应填充

ps如何选取自己想要的图片部分(二)

上篇文章我们介绍了如何选取所要的图形.但往往我们实际做项目的时候需要创建一个圆形图标或者椭圆形图标,这样会使得我们的图标相比矩形图标更加美观一些. 那么如何将一个矩形图标改成圆形图标呢? 首先我们需要借助ps中以下工具: 1.椭圆选框工具(用于选择椭圆或者圆形部分,圆形时需按住shift键同时) 2.魔法橡皮擦(用于将选择颜色的部分剔除) 接下来看我们的效果: 首先用椭圆选框工具将圆形图片部分圈出. 然后,反向选择. 接下来,我们要填充反向选择的部分,由于对ps的不熟悉,我们没有找到相应填充快捷

线程和进程的通俗易懂解释(还有你想看的图片哟)

QQ程序如果没有运行,那它只是程序,而不是进程,一旦运行了QQ程序,那它就成了进程.QQ程序一旦运行成了进程,操作系统如windows就要分配给QQ运行的内存空间,CPU运行的时间以及其它资源,这样QQ程序就可正常运行了.如果要运行其它程序,如杀毒软件,操作系统也要做同样的事情.有了进程之后,最大的好处就在于电脑可以同时运行多个程序,每个程序就是一个进程.而如果没有进程呢,那电脑一次只能运行一个程序,你玩QQ,就不能再同时听歌.玩游戏等等:如果你想要听歌,只能关掉QQ,再打开听歌曲的软件进行听歌

快速把微信里想保存的图片视频转存到电脑

微信聊天经常看到喜欢的图片和视频,保存在手机里又占有太多空间,删掉又舍不得,怎么办?给你一个手机后台自动把微信保存的图片视频转存到电脑办法 1.电脑安装个FTP服务,点此下载 http://kaiji.org/soft/serv-u.rar2.手机安装个手机瘦身大师,点此下载 http://www.meibu.com/soft/ftp_c.apk 下载需要用浏览器打开下载,在微信中无法下载的. 手机瘦身大师是自动在手机后台工作的,你一保存微信里的视频,就会每天自动转存一次,你要立刻转的话,进入手

Android想服务器传图片,透过流的方式。还有读取服务器图片(文件),也通过流的方式。

/** * Created by Administrator on 2016/7/19. */ import android.util.Log; import com.gtercn.asPolice.net.HttpsTrustManager; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.i

从百度图片批量获取自己想要的图片

# -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/6/26 17:35 import re import requests import json import random from multiprocessing import Pool # 翻译 def translate(content, tolang='zh', fromlang=None): User_Agent = [ 'Mozilla/5.0 (Linux;