質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

2051閲覧

Objective-Cで書かれた画像回転をSwiftで記述したい

hakase

総合スコア107

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2015/08/10 09:28

フォトライブラリで選択した画像を回転してリサイズして保存したいです。
Objective-Cで

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage]; int originalWidth = (int)(image.size.width); int originalHeight = (int)(image.size.height); int w,h,w2,h2; float ratio; if(originalWidth>originalHeight){ ratio=originalHeight/250.0; w=(int)(originalWidth/ratio); h=250; } else{ ratio=originalWidth/250.0; w=250; h=(int)(originalHeight/ratio); } CGImageRef imageRef = [image CGImage]; CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); CGColorSpaceRef colorSpaceInfo = CGImageGetColorSpace(imageRef); if (bitmapInfo == kCGImageAlphaNone) { bitmapInfo = kCGImageAlphaNoneSkipLast; } CGContextRef bitmap; bitmap = CGBitmapContextCreate(NULL, w, h, CGImageGetBitsPerComponent(imageRef), CGImageGetBytesPerRow(imageRef), colorSpaceInfo, bitmapInfo); w2=w; h2=h; if (image.imageOrientation == UIImageOrientationLeft) { CGContextRotateCTM (bitmap, 90.0*M_PI/180.0); CGContextTranslateCTM (bitmap, 0, -w); w2=h; h2=w; } else if (image.imageOrientation == UIImageOrientationRight) { CGContextRotateCTM (bitmap, -90.0*M_PI/180.0); CGContextTranslateCTM (bitmap, -h, 0); w2=h; h2=w; } else if (image.imageOrientation == UIImageOrientationUp) { // NOTHING } else if (image.imageOrientation == UIImageOrientationDown) { CGContextTranslateCTM (bitmap, w, h); CGContextRotateCTM (bitmap, -180.0*M_PI/180.0); } CGContextDrawImage(bitmap, CGRectMake(0, 0, w2, h2), imageRef); CGImageRef ref = CGBitmapContextCreateImage(bitmap); UIImage *newImage = [UIImage imageWithCGImage:ref]; CGContextRelease(bitmap); CGImageRelease(ref); imageview.image=newImage; NSString *itemPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSString *str=@"image.jpg"; NSString *filePath = [itemPath stringByAppendingPathComponent:str]; [UIImageJPEGRepresentation(newImage, 0.3f) writeToFile:filePath atomically:YES]; [ipc dismissViewControllerAnimated:YES completion:NULL]; }

このように記述されたコードをswiftにしたいです。特に

if (bitmapInfo == kCGImageAlphaNone) {

でひっかかっています。

全文swiftにしていただければうれしいですが、ポイントとなる部分だけでも構いません。困っています。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

if (bitmapInfo.rawValue == CGImageAlphaInfo.None.rawValue) { bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.NoneSkipLast.rawValue) }

で解決しました

投稿2015/08/12 05:59

hakase

総合スコア107

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin27

2016/07/23 07:39

こんにちは。自分もフォトライブラリで選択した画像を回転して保存したいのですが、swiftのサンプルがなくて困っています。 全文のswiftをご提示頂くことはできませんでしょうか?
guest

0

引っ掛かっている。という記述部分に関して…
kCGImageAlphaNone というenum値を使って比較していますが、対象は CGBitmapInfo 定義の値であっていますか?

リファレンスを読むと、対象にするべきなのは CGImageAlphaInfo で定義されるenum値の方ではないかと思います。
そうであれば、CGImageGetAlphaInfo で比較対象の値を得ることができます。

そうなると、その後の処理で扱う内容が変わってしまいますが、そもそも判定結果が必要でなかったなら判定自体が不要です。

判定結果が必要な場合には、それがなんの為の処理でなぜ必要なのか。ということが分かれば対処の仕方も判りそうです。また、もしさらに質問が必要だったとしても、そういった情報を提示できれば回答も得やすいのではないかと思います。

投稿2015/08/10 10:11

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問