+(UIImage*)imageFromView:(UIView*)theView{//drawaview'scontentsintoanimagecontextUIGraphicsBeginImageContext(theView." />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

一些有關(guān)圖像處理的代碼片段(抓圖、倒影、圓角)

系統(tǒng) 2075 0

?

捕捉屏幕截圖
CALayer實例使用Core Graphics的renderInContext方法可以將視圖繪制到圖像上下文中以便轉(zhuǎn)化為其他UIImage實例。前提先#import <QuartzCore/QuartzCore.h>

      + (UIImage *) imageFromView: (UIView *)theView {
      
// draw a view's contents into an image context
UIGraphicsBeginImageContext(theView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();

[theView.layer renderInContext:context];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}

注:UIGraphicsBeginImageContext(CGSize size)創(chuàng)建一個基于位圖的上下文(context),并將其設(shè)置為當前上下文。函數(shù)功能與UIGraphicsBeginImageContextWithOptions相同,相當于該方法的opaque參數(shù)為NO,scale因子為1.0。 而UIGraphicsEndImageContext()方法是移除棧頂?shù)幕诋斍拔粓D的圖形上下文。

捕捉截取某個區(qū)域內(nèi)屏幕圖像

      - (UIImage *)imageFromView: (UIView *) theView  atFrame:(CGRect)rect
      
{
UIGraphicsBeginImageContext(theView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
UIRectClip(rect);
[theView.layer renderInContext:context];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return theImage; // [self getImageAreaFromImage:theImage atFrame:rect];
}

從某圖片中截圖

      UIImage *image = [[UIImage alloc] initWithData:data];
      
        //
      
      
        大圖
      
      
        
CGRect imageRect = CGRectMake( 0.0 , 0.0 , image.size.width, image.size.height);
CGSize itemSize = CGSizeMake(w,h);
UIGraphicsBeginImageContext(itemSize);
[image drawInRect:imageRect];
UIImage *smallimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

視圖添加倒影效果

      
        const
      
      
 CGFloat kReflectPercent = -
      
        0.25f
      
      
;
      
const CGFloat kReflectOpacity = 0.3f ;
const CGFloat kReflectDistance = 10.0f ;

+ ( void )addSimpleReflectionToView:(UIView *)theView
{
CALayer *reflectionLayer = [CALayer layer];
reflectionLayer.contents = [theView layer].contents;
reflectionLayer.opacity = kReflectOpacity;
reflectionLayer.frame = CGRectMake( 0.0f , 0.0f ,theView.frame.size.width,theView.frame.size.height*kReflectPercent); // 倒影層框架設(shè)置,其中高度是原視圖的百分比
CATransform3D stransform = CATransform3DMakeScale( 1.0f ,- 1.0f , 1.0f );
CATransform3D transform = CATransform3DTranslate(stransform, 0.0f ,-(kReflectDistance + theView.frame.size.height), 0.0f );
reflectionLayer.transform = transform;
reflectionLayer.sublayerTransform = reflectionLayer.transform;
[[theView layer] addSublayer:reflectionLayer];
}

?另一:使用Core Graphics創(chuàng)建倒影

      + (CGImageRef) createGradientImage:(CGSize)size
      
{
CGFloat colors[] = { 0.0 , 1.0 , 1.0 , 1.0 };
// 在灰色設(shè)備色彩上建立一漸變
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(nil,size.width,size.height, 8 , 0 ,colorSpace,kCGImageAlphaNone);
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace,colors,NULL, 2 );
CGColorSpaceRelease(colorSpace);

// 繪制線性漸變
CGPoint p1 = CGPointZero;
CGPoint p2 = CGPointMake( 0 ,size.height);
CGContextDrawLinearGradient(context,gradient,p1,p2,kCGGradientDrawsAfterEndLocation);

// Return the CGImage
CGImageRef theCGImage = CGBitmapContextCreateImage(context);
CFRelease(gradient);
CGContextRelease(context);
return theCGImage;
}

//Create a shrunken frame for the reflection

      + (UIImage *) reflectionOfView:(UIView *)theView WithPercent:(CGFloat) percent
      
{
// Retain the width but shrink the height
CGSize size = CGSizeMake(theView.frame.size.width, theView.frame.size.height * percent);

// Shrink the View
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *partialimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

// build the mask
CGImageRef mask = [ImageHelper createGradientImage:size];
CGImageRef ref = CGImageCreateWithMask(partialimg.CGImage,mask);
UIImage *theImage = [UIImage imageWithCGImage: ref ];
CGImageRelease( ref );
CGImageRelease(mask);
return theImage;
}

const CGFloat kReflectDistance = 10.0f ;
+ ( void ) addReflectionToView: (UIView *)theView
{
theView.clipsToBounds = NO;
UIImageView *reflection = [[UIImageView alloc] initWithImage:[ImageHelper reflectionOfView:theView withPercent: 0.45f ]];
CGRect frame = reflection.frame;
frame.origin = CGPointMake( 0.0f , theView.frame.size.height + kReflectDistance);
reflection.frame = frame;

// add the reflection as a simple subview
[theView addSubView:reflection];
[reflection release];
}

實現(xiàn)圓角圖片:

      UIColor *color = [UIColor colorWithRed:
      
        0.95
      
      
 green:
      
        0.95
      
      
 blue:
      
        0.95
      
      
 alpha:
      
        0
      
      
];
      
[aImage setBackgroundColor:color]; // 設(shè)置背景透明

/* *****設(shè)置圖片圓角begin****** */
aImage.layer.masksToBounds = YES;
aImage.layer.cornerRadius = 5.0 ;
aImage.layer.borderWidth = 0.5 ;
aImage.layer.borderColor = [[UIColor grayColor] CGColor];
/* *****設(shè)置圖片圓角end******* */

另有方法可見:http://www.4ucode.com/Study/Topic/2058289轉(zhuǎn)載文章。

實現(xiàn)iPhone圖標的水晶立體效果

      - (
      
        void
      
      
)viewDidLoad {
      
[super viewDidLoad];
UIGraphicsBeginImageContext(icon.bounds.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
const CGFloat components[ 4 ] = { 0.0 , 0.4 , 0.0 , 1.0 };
CGContextSetFillColor(ctx, components);
CGContextFillRect(ctx, CGRectMake( 0 , 0 , icon.bounds.size.width, icon.bounds.size.height));
UIImage *background = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImage *image = [UIImage imageNamed: @" icon.png " ];
UIImage *mask = [UIImage imageNamed: @" IconBase.png " ];
UIImage *roundCorner = [UIImage imageNamed: @" round-corner.png " ];
icon.image = image;
CALayer* subLayer = [[CALayer layer] retain];
subLayer.frame = icon.bounds;
subLayer.contents = ( id )[background CGImage];
CALayer* maskLayer = [[CALayer layer] retain];
maskLayer.frame = icon.bounds;
maskLayer.contents = ( id )[mask CGImage];
[subLayer setMask:maskLayer];
[[icon layer] addSublayer:subLayer];
CALayer* roundCornerLayer = [[CALayer layer] retain];
roundCornerLayer.frame = icon.bounds;
roundCornerLayer.contents = ( id )[roundCorner CGImage];
[[icon layer] setMask:roundCornerLayer];
[maskLayer release];
[subLayer release];
[roundCornerLayer release];
}

兩圖合成一圖

      - (UIImage*)addImage:(UIImage *)image1 toImage:(UIImage*)image2
      
{
UIGraphicsBeginImageContext(image1.size);

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

UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}

一些有關(guān)圖像處理的代碼片段(抓圖、倒影、圓角)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产福利视频一区美女 | 中国一级特黄毛片大片 | 亚洲国产日韩欧美在线 | 国产精品久久久久久日本一道 | 国产99页| 青青草国产成人久久91网 | 亚洲精品天堂 | 天天操天天玩 | 国产玖玖 | 色悠久久久久综合网伊人男男 | 久久精品欧美一区二区三区不卡 | 91精品国产一区二区 | 日韩黄色一级视频 | 欧美日韩色综合网站 | 精品无人乱码一区二区三区 | 日韩伦理一区二区三区 | 一区二区久久 | 日韩免费精品一级毛片 | 91福利一区二区在线观看 | 国产传媒网址 | 日韩在线观看视频网站 | 久操网址 | 久久久久高清 | 魔法骑士在线观看免费完整版高清 | 日韩精品一区二 | 欧美精品99久久久久久人 | 国产成人免费永久播放视频平台 | 欧美一级电影视频 | 国产成人三级 | 青娱乐综合 | 污污成人一区二区三区四区 | 北岛玲亚洲一区在线观看 | 欧美啊啊啊 | 日韩六九视频 | 精品亚洲欧美高清不卡高清 | 欧美人xx| jizzjizzjizzjizz国产 | 自拍 第一页 | 日本中文字幕网站 | 亚洲最大在线 | 久久综合久色欧美综合狠狠 |