ios 将矩形图片裁剪成圆形图片

  在ios中将一个正方形的图片裁剪成圆形的图片是一件非常容易的事情, 直接设置 imageView.layer.cornerRadius 这个属性, 再设置 imageView.clipsToBounds = YES 就可以了, 但是对于长方形的图片来说这个方式裁剪出来的就不是一个圆形的了, 而是个椭圆的. 解决这个问题就需要自己画 并且需要计算. 最终效果图如下:

tips: 如果是裁剪矩形的话, 是从图片中心的位置为圆心剪裁的.

代码如下:

@implementation UIImage (CF)

+ (UIImage*)circleImageWith: (NSString*)imageName borderWidth: (CGFloat)width borderColor: (UIColor*)color

{

  UIImage* oldImage = [UIImage imageNamed:imageName];

CGFloat minLength  = MIN(oldImage.size.width, oldImage.size.height);

CGFloat length = minLength + width * 2;

CGFloat centerX = length * 0.5;

CGFloat centerY = length * 0.5;

CGFloat bigRadius = length * 0.5;

UIGraphicsBeginImageContextWithOptions(CGSizeMake(length, length), NO, 0.0);

CGContextRef ctx = UIGraphicsGetCurrentContext();

// 画大圆

[color set];

CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0);

CGContextFillPath(ctx);

// 画小圆

CGFloat smallRadius = minLength * 0.5;

CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0);

CGContextClip(ctx);

CGFloat imageX = centerX - oldImage.size.width * 0.5;

CGFloat imageY = centerY - oldImage.size.height * 0.5;

[oldImage drawInRect:CGRectMake(imageX, imageY, oldImage.size.width, oldImage.size.height)];

UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;

}

@end

时间: 2024-10-03 13:23:24

ios 将矩形图片裁剪成圆形图片的相关文章

如何将方形图片磨成圆形图片

如何将方形图片磨成圆形图片 在开发中经常会有一些需求,比如显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其他的一些形状.但是往往我们手上的图片或者从服务器 获取到的图片都是方形的.这时候就需要我们自己进行处理,将图片处理成所需要的形状. 使用Xfermode 两图相交方式 通过查找资料通过查找资料发现android中可以设置画笔的Xfermode即相交模式,从而设置两张图相交之后的显示方式,具体模式见下图,源码可以去android apidemo.(SRC 为我们要画到目标图上的图即

iOS给一张矩形图片剪切成圆形图片

随着APP发展,个人账户的注册和登陆,都有头像的设置,圆形头像也越来越多,此方法正是对剪切圆头像的封装. //****************************************************************************************************************// //******************************************************************************

把图片转换成圆形图片

调用:(bt是Bitmap) head_portrait.setImageBitmap(ToRoundBitmap.toRoundBitmap(bt)); 转换圆形的方法: 1 package com.ghp.tools; 2 3 import android.graphics.Bitmap; 4 import android.graphics.Canvas; 5 import android.graphics.Color; 6 import android.graphics.Paint; 7

cocos2dx 3.X 利用clippingNode把图片裁剪成圆形

ClippingNode简介 先简单了解一下clippingNode类的使用.顾名思义,首先它是一个node,可以做为其他sprite,node的容器,而且是一个可以裁剪的node.如何裁剪,如何定义一套裁剪的规则出来.这里可以使用一张图片,根据图片的分辨率或者有效像素进行裁剪,或者自己画出来一个裁剪区域,根据这个区域进行裁剪.那这个图片或者画出来的区域,就是模板,clippingNode根据模板进行图片的裁剪. 主要方法: static ClippingNode* create(Node *s

将矩形图片转化为圆形图片

功能:点击按钮将一张矩形的图片裁剪为圆形的图片,圆形图片为矩形的内切圆 工具类: import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; /** * 将矩形图片变为圆形的工具类 */ public clas

图片裁剪之圆形头像

把一张普通的图片刻意裁剪成圆形,并给圆形图片加上圆形边框 代码抽取为UIImage的分类方法,如下: 1 + (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor 2 { 3 // 1.加载原图 4 UIImage *oldImage = [UIImage imageNamed:name]; 5 6 // 2.开启

Glide的加载图片的帮助类,用来把图片圆角或者改成圆形图片

Glide虽然非常好用但是没找到把图片圆角的方法,所以百度了一个非常不错的加载类自己实现圆角图 感谢原文章作者:http://blog.csdn.net/weidongjian/article/details/47144549 自定义一个extend BitmapTransformation的方法,把获得的bitmap转化成圆形图片 import android.content.Context; import android.content.res.Resources; import andro

ASP.NET MVC在服务端把异步上传的图片裁剪成不同尺寸分别保存,并设置上传目录的尺寸限制

我曾经试过使用JSAjaxFileUploader插件来把文件.照片以异步的方式上传,就像"MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01-单文件上传"中说的,这种方法足够轻.足够好.但今天,要在前面的基础上再增加2个需求: 1.异步判断上传的图片是否超过最大限制2.把上传的图片裁剪成大中小3张图片,分别保存,删除的时候一块被删除 上传图片如果超出最大尺寸限制,终止上传,并报错误信息. 前台上传图片,显示缩略图. 在项目根目录下的指定文

android 将图片转换成黑白图片

先调用android的系统工具,获取图片生成bitmap文件,再使用android中的二值化技术,将图片转化成黑白图片,主界面代码: package com.example.blackwhite; import java.io.IOException; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore;