UIImageの連結


UIImageを横に連結して新しいUIImageを作るメソッドを作りました。
といってもほとんどこちらのサイト様のコピペです。
UIImageの合成 – Horigoodの日記 – iPhoneアプリ開発グループ

コピペで動かなかった部分は書き換えています。


+ (UIImage *)concatImages:(UIImage *)imgA :(UIImage *)imgB
{
	int widthA = CGImageGetWidth(imgA.CGImage);
	int widthB = CGImageGetWidth(imgB.CGImage);
	int height = CGImageGetHeight(imgA.CGImage);

	int widthC = widthA + widthB;
	unsigned char *bitmap = calloc(widthC * height * 4, sizeof(unsigned char));
	CGContextRef bitmapContext = CGBitmapContextCreate(bitmap,
						   	widthC,
						   	height,
						   	8,
						   	widthC * 4,
						   	CGColorSpaceCreateDeviceRGB(),
						   	kCGImageAlphaPremultipliedFirst);

	//imgAをbitmapContextに描画
	CGContextDrawImage(bitmapContext, CGRectMake(0, 0, widthA, height), imgA.CGImage);

	//imgBをimgAの隣に描画
	CGContextDrawImage(bitmapContext, CGRectMake(widthA, 0, widthB, height), imgB.CGImage);

	//CGContextからCGImageを作成
	CGImageRef imgRef = CGBitmapContextCreateImage (bitmapContext);

	//CGImageからUIImageを作成
	UIImage *imgC = [UIImage imageWithCGImage:imgRef];

	//bitmapを解放
	free(bitmap);
	
	return imgC;
}

大部分がコピペなのできちんと理解できているか不安です。
間違いとかに気づかれた方いらっしゃいましたらコメントお願いします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です