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

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

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

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

Swift

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

Q&A

解決済

1回答

2457閲覧

画像を拡大させた状態で画像を切り抜きたい

interpiamobile

総合スコア66

iOS

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

Swift

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

0グッド

0クリップ

投稿2016/04/14 06:13

現在画面に表示されている画像を拡大縮小できるようにしており、以下の画像を拡大させると、

before

次のようになります。

after

この時に画像を保存すると、白い枠内の画像を保存するようにしたいのですが、なかなかうまくいきません。
画像の拡大縮小に関してはscrollViewのmaximumZoomScaleとminimumZoomScaleを指定して、viewForZoomingInScrollViewを実装して実現しています。
白い枠線は透明なUIViewにborderColorとborderWidthを指定して枠線っぽく見せています。
ただ単にこのUIViewの範囲で画像を切り抜けばいいものかと思ったのですが、思った通りにいきません。
切り抜きはこのように行っています。

Swift

1CGImageCreateWithImageInRect(image.CGImage, self.trimmingFrameView.frame)

trimmingFrameViewが白い枠線のUIViewです。
どこが間違っているのでしょうか?また、どのようにすれば画像を拡大させた状態で画像を切り抜くことができるでしょうか?
どなたかわかる方がいれば教えていただきたいです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

self.trimmingFrameView.frameは、trimmingFrameViewを貼り付けている親のビューの座標上でどの位置にあるかを表しているものであり、イメージ座標上の位置を表しているものではありません。
このためCGImageCreateWithImageInRect()のイメージ切り出し位置に指定しても正しく切りだせません。

どのようなビュー構成にしているのか質問に書かれてないので本当にできるかどうかわかりませんが、
仮に、切り出したいイメージがimageView(UIImageViewクラス)のimageプロパティに格納されているとしたなら、
let rect = trimmingFrameView.convertRect(trimmingFrameView.bounds, toView: imageView)
でimageView上の座標に変換したrectCGImageCreateWithImageInRect()の切り出し位置に指定すれば、うまく切り出しできるかもしれません。

これでうまく切り出しできないなら、現在のビュー構成でself.trimmingFrameView.frameをどうやったらイメージ座標に変換できるか自分で考えて計算して変換するしかないと思います。

投稿2016/04/14 11:41

TakeOne

総合スコア6299

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

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

interpiamobile

2016/04/15 01:08

ご回答ありがとうございます。ご提示の方法で画像を切り抜くことができました!なるほど、self.trimmingFrameView.frameでは画像の座標上の位置を指定できてなかったのですね。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問