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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2107閲覧

UIScrollView内のUIButtonの画像を回転させずにUIImageViewに描写するには

acid

総合スコア20

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/08/17 09:31

カメラで撮影した画像をフィルターで色調加工して、UIButtonの画像にしています。
UIButtonをタップするとUIImageViewに、色調加工された画像が描写されるような
UIを考えています。
しかし、ボタンの画像の向きとUIImageViewに描写される画像の向きが揃わないため
困っています。
UIButtonなどのコードは、下記の通りです。

@IBAction func filterTapped(sender: UIButton) { switch sender.tag { case 1: mainImageView.image = (self.view.viewWithTag(1) as! UIButton).imageView?.image case 2: mainImageView.image = (self.view.viewWithTag(2) as! UIButton).imageView?.image case 3: mainImageView.image = (self.view.viewWithTag(3) as! UIButton).imageView?.image case 4: mainImageView.image = (self.view.viewWithTag(4) as! UIButton).imageView?.image 省略 default: break } } func filter1(image: UIImage) -> UIImage { let filter1 = CIFilter(name: "CISepiaTone") let ciImage: CIImage = CIImage(image: image)!; filter1!.setValue(ciImage, forKey: kCIInputImageKey) filter1!.setValue(1.0, forKey: kCIInputIntensityKey) let outputImage = sepiaFilter!.outputImage //return UIImage(CIImage: outputImage!, scale: 1.0, orientation: .Up) return UIImage(CIImage: outputImage!, scale: 1.0, orientation: image.imageOrientation) } func filter2(image: UIImage) -> UIImage { let filter2 = CIFilter(name: "CIPhotoEffectMono") let ciImage: CIImage = CIImage(image: image)!; filter2!.setValue(ciImage, forKey: kCIInputImageKey) let outputImage = filter2!.outputImage //return UIImage(CIImage: outputImage!, scale: 1.0, orientation: .Up) return UIImage(CIImage: outputImage!, scale: 1.0, orientation: image.imageOrientation) } 省略 func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { mainImageView.image = image (self.view.viewWithTag(1) as! UIButton).setImage(image, forState: .Normal) (self.view.viewWithTag(2) as! UIButton).setImage(filter1(image), forState: .Normal) (self.view.viewWithTag(3) as! UIButton).setImage(filter2(image), forState: .Normal) 省略 picker.dismissViewControllerAnimated(true, completion: nil) }

UIの画像は下記のとおりです。
イメージ説明
撮影環境は背面カメラを使用しての縦撮りです。
(iPhoneのホームボタンが下の状態です)
filter1()やfilter2()で
orientation: .Upと記述するとUIButtonの画像が90度回転してしまい
UIImageViewの画像は問題なく縦に描写されます。
この場合も、UIButtonとUIImageViewの画像の向きが揃いません。
UIButtonの画像を回転させずにUIImageViewに描写させるには、
どのようなコードディングをすべきでしょうか。
長文となり申し訳ありません。

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

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

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

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

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

guest

回答1

0

ベストアンサー

CIImageからUIImageに直接変換すると色々と情報が欠落(?)してしまうようで、
CGImageを経由することでそれを回避できるようです。

swift

1func filter1(image: UIImage) -> UIImage { 2 let filter1 = CIFilter(name: "CISepiaTone") 3 let ciImage: CIImage = CIImage(image: image)!; 4 filter1!.setValue(ciImage, forKey: kCIInputImageKey) 5 filter1!.setValue(1.0, forKey: kCIInputIntensityKey) 6 let outputImage = filter1!.outputImage 7 //(ここから修正) 8 //CIImage -> CGImage 9 let cgImage = CIContext().createCGImage(outputImage!, fromRect: ciImage.extent) 10 //CGImage -> UIImage (scaleとorientationは元画像のものを使う) 11 let uiImage = UIImage(CGImage: cgImage, scale: image.scale, orientation: image.imageOrientation) 12 return uiImage 13}

投稿2016/08/18 01:23

fuzzball

総合スコア16731

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問