SHIBUYA JACK
渋谷ジャック

230円
タワーレコードの広告を見てたら、突然閃きました。
渋谷のスクランブル交差点から見える看板が、全部自分の広告だったらすごいなと思って作りました。
画像を撮影したりアルバムから選ぶと、渋谷中の広告が自分のものに大変身!!

109の看板に俺の顔が!!

ライトアップされるとキレイ

どんだけ自分好きなんだよって感じで
iPhoneアプリ開発用
夏場の暑い日に汗だくで撮った画像を、看板の部分だけ切り抜いて画像を合成。
Scroll ViewにImage Viewを貼り込んでいきました。
カメラで撮影する、アルバムから選ぶコード
- (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
// ボタンインデックスをチェックする
if (buttonIndex >= 3) {
return;
}
// ソースタイプを決定する
UIImagePickerControllerSourceType sourceType = 0;
switch (buttonIndex) {
case 0: {
sourceType = UIImagePickerControllerSourceTypeCamera;
break;
}
case 1: {
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break;
}
case 2: {
sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
break;
}
}
// 使用可能かどうかチェックする
if (![UIImagePickerController isSourceTypeAvailable:sourceType]) {
return;
}
// イメージピッカーを作る
UIImagePickerController* imagePicker;
imagePicker = [[UIImagePickerController alloc] init];
[imagePicker autorelease];
imagePicker.sourceType = sourceType;
imagePicker.allowsImageEditing = YES;
imagePicker.delegate = self;
// イメージピッカーを表示する
[self presentModalViewController:imagePicker animated:YES];
}
//--------------------------------------------------------------//
#pragma mark -- UIImagePickerControllerDelegate --
//--------------------------------------------------------------//
- (void)imagePickerController:(UIImagePickerController*)picker
didFinishPickingImage:(UIImage*)image
editingInfo:(NSDictionary*)editingInfo {
// イメージピッカーを隠す
[self dismissModalViewControllerAnimated:YES];
// オリジナル画像を取得する
UIImage* originalImage;
originalImage = [editingInfo objectForKey:UIImagePickerControllerOriginalImage];
// グラフィックスコンテキストを作る
CGSize size = { 960, 960 };
UIGraphicsBeginImageContext(size);
// 画像を縮小して描画する
CGRect rect;
rect.origin = CGPointZero;
rect.size = size;
[originalImage drawInRect:rect];
// 描画した画像を取得する
UIImage* shrinkedImage;
shrinkedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// CGImageを取得する
CGImageRef cgImage;
cgImage = shrinkedImage.CGImage;
// 画像情報を取得する
size_t width;
size_t height;
size_t bitsPerComponent;
size_t bitsPerPixel;
size_t bytesPerRow;
CGColorSpaceRef colorSpace;
CGBitmapInfo bitmapInfo;
bool shouldInterpolate;
CGColorRenderingIntent intent;
width = CGImageGetWidth(cgImage);
height = CGImageGetHeight(cgImage);
bitsPerComponent = CGImageGetBitsPerComponent(cgImage);
bitsPerPixel = CGImageGetBitsPerPixel(cgImage);
bytesPerRow = CGImageGetBytesPerRow(cgImage);
colorSpace = CGImageGetColorSpace(cgImage);
bitmapInfo = CGImageGetBitmapInfo(cgImage);
shouldInterpolate = CGImageGetShouldInterpolate(cgImage);
intent = CGImageGetRenderingIntent(cgImage);
// データプロバイダを取得する
CGDataProviderRef dataProvider;
dataProvider = CGImageGetDataProvider(cgImage);
// ビットマップデータを取得する
CFDataRef data;
UInt8* buffer;
data = CGDataProviderCopyData(dataProvider);
buffer = (UInt8*)CFDataGetBytePtr(data);
// 効果を与えたデータを作成する
CFDataRef effectedData;
effectedData = CFDataCreate(NULL, buffer, CFDataGetLength(data));
// 効果を与えたデータプロバイダを作成する
CGDataProviderRef effectedDataProvider;
effectedDataProvider = CGDataProviderCreateWithCFData(effectedData);
// 画像を作成する
CGImageRef effectedCgImage;
UIImage* effectedImage;
effectedCgImage = CGImageCreate(
width, height,
bitsPerComponent, bitsPerPixel, bytesPerRow,
colorSpace, bitmapInfo, effectedDataProvider,
NULL, shouldInterpolate, intent);
effectedImage = [[UIImage alloc] initWithCGImage:effectedCgImage];
[effectedImage autorelease];
// 画像を表示する
imageView1.image = image;
imageView2.image = image;
imageView3.image = image;
imageView4.image = image;
imageView5.image = image;
imageView6.image = image;
imageView7.image = image;
imageView8.image = image;
imageView9.image = image;
imageView10.image = image;
imageView11.image = image;
imageView12.image = image;
imageView13.image = image;
imageView14.image = image;
imageView15.image = image;
imageView16.image = image;
imageView17.image = image;
imageView18.image = image;
imageView19.image = image;
imageView20.image = image;
imageView21.image = image;
imageView22.image = image;
imageView23.image = image;
imageView24.image = image;
// 作成したデータを解放する
CGImageRelease(effectedCgImage);
CFRelease(effectedDataProvider);
CFRelease(effectedData);
CFRelease(data);
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker
{
// イメージピッカーを隠す
[self dismissModalViewControllerAnimated:YES];
}
渋谷ジャック

230円
タワーレコードの広告を見てたら、突然閃きました。
渋谷のスクランブル交差点から見える看板が、全部自分の広告だったらすごいなと思って作りました。
画像を撮影したりアルバムから選ぶと、渋谷中の広告が自分のものに大変身!!

109の看板に俺の顔が!!

ライトアップされるとキレイ

どんだけ自分好きなんだよって感じで
iPhoneアプリ開発用
夏場の暑い日に汗だくで撮った画像を、看板の部分だけ切り抜いて画像を合成。
Scroll ViewにImage Viewを貼り込んでいきました。
カメラで撮影する、アルバムから選ぶコード
- (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
// ボタンインデックスをチェックする
if (buttonIndex >= 3) {
return;
}
// ソースタイプを決定する
UIImagePickerControllerSourceType sourceType = 0;
switch (buttonIndex) {
case 0: {
sourceType = UIImagePickerControllerSourceTypeCamera;
break;
}
case 1: {
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break;
}
case 2: {
sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
break;
}
}
// 使用可能かどうかチェックする
if (![UIImagePickerController isSourceTypeAvailable:sourceType]) {
return;
}
// イメージピッカーを作る
UIImagePickerController* imagePicker;
imagePicker = [[UIImagePickerController alloc] init];
[imagePicker autorelease];
imagePicker.sourceType = sourceType;
imagePicker.allowsImageEditing = YES;
imagePicker.delegate = self;
// イメージピッカーを表示する
[self presentModalViewController:imagePicker animated:YES];
}
//--------------------------------------------------------------//
#pragma mark -- UIImagePickerControllerDelegate --
//--------------------------------------------------------------//
- (void)imagePickerController:(UIImagePickerController*)picker
didFinishPickingImage:(UIImage*)image
editingInfo:(NSDictionary*)editingInfo {
// イメージピッカーを隠す
[self dismissModalViewControllerAnimated:YES];
// オリジナル画像を取得する
UIImage* originalImage;
originalImage = [editingInfo objectForKey:UIImagePickerControllerOriginalImage];
// グラフィックスコンテキストを作る
CGSize size = { 960, 960 };
UIGraphicsBeginImageContext(size);
// 画像を縮小して描画する
CGRect rect;
rect.origin = CGPointZero;
rect.size = size;
[originalImage drawInRect:rect];
// 描画した画像を取得する
UIImage* shrinkedImage;
shrinkedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// CGImageを取得する
CGImageRef cgImage;
cgImage = shrinkedImage.CGImage;
// 画像情報を取得する
size_t width;
size_t height;
size_t bitsPerComponent;
size_t bitsPerPixel;
size_t bytesPerRow;
CGColorSpaceRef colorSpace;
CGBitmapInfo bitmapInfo;
bool shouldInterpolate;
CGColorRenderingIntent intent;
width = CGImageGetWidth(cgImage);
height = CGImageGetHeight(cgImage);
bitsPerComponent = CGImageGetBitsPerComponent(cgImage);
bitsPerPixel = CGImageGetBitsPerPixel(cgImage);
bytesPerRow = CGImageGetBytesPerRow(cgImage);
colorSpace = CGImageGetColorSpace(cgImage);
bitmapInfo = CGImageGetBitmapInfo(cgImage);
shouldInterpolate = CGImageGetShouldInterpolate(cgImage);
intent = CGImageGetRenderingIntent(cgImage);
// データプロバイダを取得する
CGDataProviderRef dataProvider;
dataProvider = CGImageGetDataProvider(cgImage);
// ビットマップデータを取得する
CFDataRef data;
UInt8* buffer;
data = CGDataProviderCopyData(dataProvider);
buffer = (UInt8*)CFDataGetBytePtr(data);
// 効果を与えたデータを作成する
CFDataRef effectedData;
effectedData = CFDataCreate(NULL, buffer, CFDataGetLength(data));
// 効果を与えたデータプロバイダを作成する
CGDataProviderRef effectedDataProvider;
effectedDataProvider = CGDataProviderCreateWithCFData(effectedData);
// 画像を作成する
CGImageRef effectedCgImage;
UIImage* effectedImage;
effectedCgImage = CGImageCreate(
width, height,
bitsPerComponent, bitsPerPixel, bytesPerRow,
colorSpace, bitmapInfo, effectedDataProvider,
NULL, shouldInterpolate, intent);
effectedImage = [[UIImage alloc] initWithCGImage:effectedCgImage];
[effectedImage autorelease];
// 画像を表示する
imageView1.image = image;
imageView2.image = image;
imageView3.image = image;
imageView4.image = image;
imageView5.image = image;
imageView6.image = image;
imageView7.image = image;
imageView8.image = image;
imageView9.image = image;
imageView10.image = image;
imageView11.image = image;
imageView12.image = image;
imageView13.image = image;
imageView14.image = image;
imageView15.image = image;
imageView16.image = image;
imageView17.image = image;
imageView18.image = image;
imageView19.image = image;
imageView20.image = image;
imageView21.image = image;
imageView22.image = image;
imageView23.image = image;
imageView24.image = image;
// 作成したデータを解放する
CGImageRelease(effectedCgImage);
CFRelease(effectedDataProvider);
CFRelease(effectedData);
CFRelease(data);
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker
{
// イメージピッカーを隠す
[self dismissModalViewControllerAnimated:YES];
}