みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Swiftについて教えてください

カメラロールの写真を取得する下記の関数を作ってみたのですが、写真が90度回転されて読み込まれてしまうので、
http://blog.kitoko552.com/entry/20151213/1450008748
http://yutakaseda3216.hatenablog.com/entry/2016/01/14/132300
http://qiita.com/FGtatsuro/items/57be765cba2bf576a8d9
http://ameblo.jp/ladycosmos/entry-11789597326.html
などを調べてみたのですが解決できませんでした。
UIImage(CGImage:   ,scale:      ,orientation:     )の引数などがよく分かっていません。また、aseetから向きやサイズの取得の仕方など教えてください。よろしくお願いします。
aseetArrayはaseetを読み込んだ配列です。

func getUIImage(index :Int)->UIImage {
let asset:ALAsset = aseetArray[index] as! ALAsset;
var assetRep: ALAssetRepresentation = asset.defaultRepresentation()
var iref = assetRep.fullResolutionImage().takeUnretainedValue()
var image = UIImage(CGImage:     ,scale:     ,orientation:      )
  return image!
}

投稿日時 - 2016-05-14 09:12:56

QNo.9172270

すぐに回答ほしいです

質問者が選んだベストアンサー

http://techtechwalker.blogspot.jp/2013/12/iosalassettips.html
に書かれているように、
ALAssetRepresentationには、fullResolutionImageと一緒にscaleやorientationの情報も入っていますので、それを指定すればいいです。
ただし、swiftで実装する場合、型チェックが厳しいので型変換が必要になります。
Xcode7.3(swift2.2)なら、以下のコードで正しく表示されました。

let assetRep = assetImg.defaultRepresentation()
let iref = assetRep.fullResolutionImage().takeUnretainedValue()
let scale = CGFloat(assetRep.scale())
let orientation = UIImageOrientation(rawValue: assetRep.orientation().rawValue)!
let image = UIImage(CGImage: iref, scale: scale, orientation: orientation)

投稿日時 - 2016-05-16 14:28:56

補足

教えていただいたことへの質問ですが、ALAssetRepresentationがどんな情報をもってるかなど、クラスがもってる情報などを学ぶにはどうしたらいいですか?

投稿日時 - 2016-06-03 22:12:30

お礼

ありがとうございます。
教えていただいたコードで、写真の向きを取得できて、UIImageの向きをもたせることができました。

投稿日時 - 2016-06-03 22:04:27

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> ALAssetRepresentationがどんな情報をもってるかなど、クラスがもってる情報などを学ぶにはどうしたらいいですか?

Appleのリファレンスです。これがiOS開発者の唯一のバイブルです。
ALAssetRepresentationなら
https://developer.apple.com/library/ios/documentation/AssetsLibrary/Reference/ALAssetRepresentation_Class/
にあります。
これは、Xcodeのソースコード上で「ALAssetRepresentation」と書いてある文字列をOption+Clickするだけでも表示できます。そこにはALAssetRepresentationでできることが全部網羅して書かれてあるので、そのクラスで何がどこまでできるか(そこに書かれていないことはできない)ということもわかります。
一般のWebサイトの解説は、何ができるかをわかりやすく解説してくれますが、何ができないかまではわかりません。
なので一般のWebサイトの解説でやり方を理解したら、そこで使われているクラスのリファレンスをちゃんと読んで、その方法で何がどこまでできるのかを把握しておくことは重要です。そこまでやらないと本当に理解したことにはならず、応用ができません。

しかし、今回の問題を解決するのに必要なのは検索力です。
今回なら、ALAssetライブラリを使って取得した画像の向きが正しくないのでUIImage生成時にorientationを指定したいということですから、googleで「ALAsset orientation」を検索するだけで今回紹介した記事が検索結果のトップに表示されます。

問題解決のための検索力を身につけて、検索で得た情報でどこまでできるのかをAppleのリファレンスで確認する応用力を身につければ、開発力は上がっていくと思います。

投稿日時 - 2016-06-04 09:44:08

お礼

ありがとうございます。リファレンスで勉強します。

投稿日時 - 2016-06-04 16:47:28

あなたにオススメの質問