图片截取居中显示
2015-10-23 18:04
309 查看
/**
* 截取部分图像
*
**/
-(UIImage*)getSubImage:(UIImage *)image mCGRect:(CGRect)mCGRect centerBool:(BOOL)centerBool
{
/*如若centerBool为Yes则是由中心点取mCGRect范围的图片*/
float imgwidth = image.size.width;
float imgheight = image.size.height;
float viewwidth = mCGRect.size.width;
float viewheight = mCGRect.size.height;
CGRect rect;
if(centerBool)
rect =
CGRectMake((imgwidth-viewwidth)/2, (imgheight-viewheight)/2, viewwidth, viewheight);
else{
if (viewheight < viewwidth) {
if (imgwidth <= imgheight) {
rect =
CGRectMake(0,
0, imgwidth, imgwidth*viewheight/viewwidth);
}else {
float width = viewwidth*imgheight/viewheight;
float x = (imgwidth - width)/2 ;
if (x > 0) {
rect =
CGRectMake(x, 0, width, imgheight);
}else {
rect =
CGRectMake(0,
0, imgwidth, imgwidth*viewheight/viewwidth);
}
}
}else {
if (imgwidth <= imgheight) {
float height = viewheight*imgwidth/viewwidth;
if (height < imgheight) {
rect =
CGRectMake(0,
0, imgwidth, height);
}else {
rect =
CGRectMake(0,
0, viewwidth*imgheight/viewheight, imgheight);
}
}else {
float width = viewwidth*imgheight/viewheight;
if (width < imgwidth) {
float x = (imgwidth - width)/2 ;
rect =
CGRectMake(x, 0, width, imgheight);
}else {
rect =
CGRectMake(0,
0, imgwidth, imgheight);
}
}
}
}
CGImageRef subImageRef =
CGImageCreateWithImageInRect(image.CGImage, rect);
CGRect smallBounds =
CGRectMake(0,
0, CGImageGetWidth(subImageRef),
CGImageGetHeight(subImageRef));
UIGraphicsBeginImageContext(smallBounds.size);
CGContextRef context =
UIGraphicsGetCurrentContext();
CGContextDr
cbff
awImage(context, smallBounds, subImageRef);
UIImage* smallImage = [UIImage
imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
return smallImage;
}
* 截取部分图像
*
**/
-(UIImage*)getSubImage:(UIImage *)image mCGRect:(CGRect)mCGRect centerBool:(BOOL)centerBool
{
/*如若centerBool为Yes则是由中心点取mCGRect范围的图片*/
float imgwidth = image.size.width;
float imgheight = image.size.height;
float viewwidth = mCGRect.size.width;
float viewheight = mCGRect.size.height;
CGRect rect;
if(centerBool)
rect =
CGRectMake((imgwidth-viewwidth)/2, (imgheight-viewheight)/2, viewwidth, viewheight);
else{
if (viewheight < viewwidth) {
if (imgwidth <= imgheight) {
rect =
CGRectMake(0,
0, imgwidth, imgwidth*viewheight/viewwidth);
}else {
float width = viewwidth*imgheight/viewheight;
float x = (imgwidth - width)/2 ;
if (x > 0) {
rect =
CGRectMake(x, 0, width, imgheight);
}else {
rect =
CGRectMake(0,
0, imgwidth, imgwidth*viewheight/viewwidth);
}
}
}else {
if (imgwidth <= imgheight) {
float height = viewheight*imgwidth/viewwidth;
if (height < imgheight) {
rect =
CGRectMake(0,
0, imgwidth, height);
}else {
rect =
CGRectMake(0,
0, viewwidth*imgheight/viewheight, imgheight);
}
}else {
float width = viewwidth*imgheight/viewheight;
if (width < imgwidth) {
float x = (imgwidth - width)/2 ;
rect =
CGRectMake(x, 0, width, imgheight);
}else {
rect =
CGRectMake(0,
0, imgwidth, imgheight);
}
}
}
}
CGImageRef subImageRef =
CGImageCreateWithImageInRect(image.CGImage, rect);
CGRect smallBounds =
CGRectMake(0,
0, CGImageGetWidth(subImageRef),
CGImageGetHeight(subImageRef));
UIGraphicsBeginImageContext(smallBounds.size);
CGContextRef context =
UIGraphicsGetCurrentContext();
CGContextDr
cbff
awImage(context, smallBounds, subImageRef);
UIImage* smallImage = [UIImage
imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
return smallImage;
}
相关文章推荐
- iOS UTC秒数时间戳和日期的相互转换
- 如何删除word文档中的“小箭头↓”(手动换行符)
- 面向对象Matlab编程小demo
- plateform driver and device
- vector中erase用法注意事项
- JS判断移动设备最佳方法
- 有哪些好用的互联网数据抓取,数据采集,页面解析工具?
- Markdown笔记
- 练习2 G题 - 数值统计
- 阿里云的9折推荐码 8DIER4
- Mysql主从搭建
- MD5 为何会算不对?
- Windows API 之 CreateThread、WaitForSingleObject(未完)
- C#使用aforge框架打开摄像头(续)
- 图像滤镜艺术---Photoshop实现Instagram之Nashville滤镜
- Android控件默认风格解析之SeekBar
- vim 设置支持鼠标
- 当bridge下接口eth0单独设置IP时,为了保证LAN PC可以连接WANPC
- 数据结构--堆栈的范例程序
- 两个数组的交集,并集,差集。