圖片裁剪
第一種:獲取圖片原大小,按圖片原大小裁剪圖片(UIImage轉化為CGImageRef進行裁剪)
//獲取圖片
UIImage *image = [UIImage imageNamed:@"圖片名字"];
//獲取圖片的大小
CGSize size = image.size;
//設置需要剪切的部分(按照原圖片的大小進行)
CGRect rect = CGRectMake(0, 0, size.width / 5, size.height);
//轉化為CGImageRef
CGImageRef sourceImageRef = [image CGImage];
//進行裁剪
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);
//轉化為UIImage
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
//釋放內存
CGImageRelease(newImageRef);
UIImageView *imageView = [[UIImageView alloc] init];
imageView.frame = CGRectMake(10, 20, 300, 300);
imageView.image = newImage;
[self.view addSubview:imageView];
第二種:使用CALayer屬性對圖片進行裁剪(示例:把一張圖片裁剪成了九張)
int width = 80;
int height = 100;
int sapce = 1;
for(int i = 0; i < 9; i++)
{
UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(60 + (width + sapce) * (i%3), 80 + (height + sapce) * (i/3), width, height);
view.backgroundColor = [UIColor redColor];
//設置層的內容
view.layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"圖片名字"].CGImage);
//設置圖片剪切的范圍 [0,1]
view.layer.contentsRect = CGRectMake(1.0/3.0 * (i%3), 1.0/3.0 * (i/3), 1.0/3.0, 1.0/3.0);
[self.view addSubview:view];
}
圖片添加水印
創(chuàng)建一個類別會方便使用
下面是圖片添加水印的方法,使用的是圖片上下文來實現(xiàn)的,這是在類別的.m文件中。
#import "UIImage+Watermark.h"
//設置水印字體大小
#define kFontSize 17
//設置水印字體顏色
#define kFontColor greenColor
@implementation UIImage (Watermark)
- (UIImage *)watermarkWithText:(NSString *)text
{
//開啟圖片上下文
UIGraphicsBeginImageContextWithOptions(self.size, YES, 0);
[self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
//設置水印
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.alignment = NSTextAlignmentRight;
[text drawInRect:CGRectMake( 0, self.size.height - 30, self.size.width - 10, 30) withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kFontSize],NSParagraphStyleAttributeName:paragraph,NSForegroundColorAttributeName:[UIColor kFontColor]}];
//獲取圖片
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
//結束上下文
UIGraphicsEndImageContext();
return image;
}
@end
寫完后只要寫一行代碼就可以實現(xiàn)水印的添加,如:
UIImageView *imageView = [[UIImageView alloc] init];
imageView.frame = self.view.bounds;
UIImage *image = [UIImage imageNamed:@"圖片名字"];
//添加水印
UIImage *newImage = [image watermarkWithText:@"ssssss水印"];
imageView.image = newImage;
[self.view addSubview:imageView];
注意:水印添加時,是按圖片的大小進行的,所以圖片太大,顯示的水印會變的很小,圖片很小,顯示出來的水印會變的很大,所以需要自己調整。