這裡 UIImage 的剪裁指的是矩形樣式的剪裁,如上圖,影像被剪裁城相同大小的方形區域,並以隨機的方式散落在畫面上,要裁切影像的方式非常簡單,其實只要設定好區域 CGRect 就可以了,其程式碼如下。
//設定原始影像
UIImage *originalImage = [UIImage imageNamed:@"icon.png"];
//設定剪裁影像的位置與大小
CGImageRef imageRef = CGImageCreateWithImageInRect([originalImage CGImage], CGRectMake(0, 0, originalImage.size.width / 4, originalImage.size.height / 4));
//剪裁影像
UIImage *copiedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
//將剪裁的影像加至View中
UIImageView *imageView = [[UIImageView alloc] initWithImage:copiedImage];
//設定View的大小並秀出來
[imageView setFrame:CGRectMake(0, 0, copiedImage.size.width, copiedImage.size.height)];
[[self view] addSubview:imageView];
[imageView release];
上述程式碼掩飾了基本的剪裁過程,其剪裁的位置從左上角座標(0, 0)處開始,大小為四分之一的長與寬,最後要秀出影像的 View 大小也維持剪裁的大小,座標位置也是在左上角座標(0, 0)處。
程式碼到這裡只展示了剪裁一個區塊的程式碼,如果像要與本範例一樣的效果可以在撰寫時使用迴圈與亂數來達成,其程式碼如下。
//設定原始影像
UIImage *originalImage = [UIImage imageNamed:@"icon.png"];
//設定剪裁影像的大小
CGSize copiedImageSize = CGSizeMake(originalImage.size.width / 4, originalImage.size.height / 4);
for (int i=0; i!=30; i++) {
int randomNUM_X = arc4random() % 192;
int randomNUM_Y = arc4random() % 192;
//設定剪裁座標
CGImageRef imageRef = CGImageCreateWithImageInRect([originalImage CGImage], CGRectMake(randomNUM_X, randomNUM_Y, copiedImageSize.width, copiedImageSize.height));
//剪裁影像
UIImage *copiedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
//將剪裁的影像加至View中
UIImageView *imageView = [[UIImageView alloc] initWithImage:copiedImage];
randomNUM_X = arc4random() % 256;
randomNUM_Y = 46 + arc4random() % 400;
//設定View的大小並秀出來
[imageView setFrame:CGRectMake(randomNUM_X, randomNUM_Y, copiedImageSize.width, copiedImageSize.height)];
[[self view] addSubview:imageView];
[imageView release];
}
ps:如果是想要使用不規則的方式,則可以考慮以路徑繪出剪裁區域,或是直接使用影像當作剪裁區域再使用遮色片的方式來進行裁切。
沒有留言:
張貼留言