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

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

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

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

Swift

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

Q&A

解決済

1回答

839閲覧

複数のUIImageViewを組み合わせたものを、画質を落とすことなくPDFにしたい

mimamo

総合スコア44

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/02/03 18:41

編集2019/02/05 02:34

前提・実現したいこと

![イメージ説明]
上の画像のように、ピンクのUIImageView(getimage)と
「写真を配置」と書かれたUIImageView(getphoto)を
二つstoryboardで設置しています。
getphotoは、タッチすることで好きなように回転、移動、拡大縮小できるようになっています。
また、getphotoにはカメラロールから選択した画像が表示されるようになっています。

好きなようにgetphotoを動かした後、getphotoとピンクのUIImageView(getimage)が重なった状態でPDFにしたいのですが、このままPDFにし拡大すると画質が荒くなってしまいます。

画質が荒くなってしまうのを避けるため、UIImageViewを拡大してからPDFにしたいのですが現在画質を保ったままPDFにすることができないでいます。

ご教授何卒よろしくお願いいたします。

該当のソースコード

swift

1import UIKit 2 3 4class ViewController2: UIViewController, UIGestureRecognizerDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate { 5 6 @IBOutlet var rotationRecognizer: UIRotationGestureRecognizer! 7 8 @IBOutlet var pinchRecognizer: UIPinchGestureRecognizer! 9 10 var scale:CGFloat = 1.0 11 var Rotation:CGFloat = 0.0 12 var affine1:CGAffineTransform = CGAffineTransform() 13 var affine2:CGAffineTransform = CGAffineTransform() 14 var screenWidth:CGFloat = 0 15 var screenHeight:CGFloat = 0 16 var photowidth:CGFloat = 0 17 var photoheight:CGFloat = 0 18 var pickerphotoheight:CGFloat = 0 19 var imageHeight:CGFloat = 0 20 var imagerect:CGRect = CGRect(x:0,y:0,width:0,height:0) 21 22 23 24 let bin1: UIImage = UIImage(named:"bin1-1.jpg")! 25 26 @IBOutlet weak var getimage: UIImageView! 27 @IBOutlet weak var getphoto: UIImageView! 28 29 override func viewDidLoad() { 30 super.viewDidLoad() 31 32 // Screen Size の取得 33 screenWidth = self.view.bounds.width 34 screenHeight = self.view.bounds.height 35 36 let imageHeight = screenWidth * 210.0 / 143.5 37 let imagerect:CGRect = CGRect(x:0, y:0, width:screenWidth, height:imageHeight) 38 UserDefaults.standard.set(screenWidth, forKey: "screenWidth") 39 UserDefaults.standard.set(imageHeight, forKey:"imageHeight") 40 41 42 // ImageView frame をCGRectで作った矩形に合わせる 43 getimage.frame = imagerect; 44 45 46 // 画像の中心をスクリーンの中心位置に設定 47 getimage.center = CGPoint(x:screenWidth/2, y:screenHeight/2) 48 49 //デリゲート先に自分を設定する。 50 rotationRecognizer.delegate = self 51 pinchRecognizer.delegate = self 52 //アフィン変換の初期値を設定する。 53 prevEndPinch = getphoto.transform 54 prevEndRotate = getphoto.transform 55 prevPinch = getphoto.transform 56 prevRotate = getphoto.transform 57 58 59 // タッチ操作を enable 60 getphoto.isUserInteractionEnabled = true 61 62    getimage.image = bin1 63} 64 65    //ドラッグ終了時のアフィン変換 66 var prevEndPinch:CGAffineTransform = CGAffineTransform() 67 var prevEndRotate:CGAffineTransform = CGAffineTransform() 68 //ドラッグ中の前回アフィン変換 69 var prevPinch:CGAffineTransform = CGAffineTransform() 70 var prevRotate:CGAffineTransform = CGAffineTransform() 71 72 73 74 @IBAction func pinchPhoto(_ sender: UIPinchGestureRecognizer) { 75 print("pinch!") 76 //前回ドラッグ終了時の拡大縮小を引き継いだアフィン変換を行う。 77 let nowPinch = 78 prevEndPinch.scaledBy(x: sender.scale, y: sender.scale) 79 80 //拡大縮小と回転のアフィン変換を合わせたものを登録する。 81 getphoto.transform = prevRotate.concatenating(nowPinch) 82 83 84 //今回の拡大縮小のアフィン変換をクラス変数に保存する。 85 prevPinch = nowPinch 86 87 if(sender.state == UIGestureRecognizerState.ended) { 88 //ドラッグ終了時の拡大終了のアフィン変換をクラス変数に保存する。 89 prevEndPinch = nowPinch 90 } 91 } 92 93 94 @IBAction func rotatePhoto(_ sender: UIRotationGestureRecognizer){ 95 96 print("rotate!") 97 //前回ドラッグ終了時の回転を引き継いだアフィン変換を行う。 98 let nowRotate = prevEndRotate.rotated(by: sender.rotation) 99 100 //拡大縮小と回転のアフィン変換を合わせたものをラベルに登録する。 101 getphoto.transform = prevPinch.concatenating(nowRotate) 102 103 //今回の回転のアフィン変換をクラス変数に保存する。 104 prevRotate = nowRotate 105 106 if(sender.state == UIGestureRecognizerState.ended) { 107 //ドラッグ終了時の回転のアフィン変換をクラス変数に保存する。 108 prevEndRotate = nowRotate 109 } 110 111 } 112 113//画像の移動↓ 114 115 //タッチしたビューの中心とタッチした場所の座標のズレを保持する変数 116 var gapX:CGFloat = 0.0 // x座標 117 var gapY:CGFloat = 0.0 // y座標 118 119 120 // タッチした位置で最初に見つかったところにあるビューを取得してしまおうという魂胆 121 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 122 // 最初にタッチした指のみ取得 123 if let touch = touches.first { 124 print("touchbegin!") 125 // タッチしたビューをviewプロパティで取得する 126 if let touchedView = touch.view { 127 // tag1のものを動かす 128 if touchedView.tag == 1 { 129 // タッチした場所とタッチしたビューの中心座標がどうずれているか? 130 gapX = touch.location(in: view).x - touchedView.center.x 131 gapY = touch.location(in: view).y - touchedView.center.y 132 // 例えば、タッチしたビューの中心のxが50、タッチした場所のxが60→中心から10ずれ 133 // この場合、指を100に持って行ったらビューの中心は90にしたい 134 // ビューの中心90 = 持って行った場所100 - ずれ10 135 touchedView.center = CGPoint(x: touch.location(in: view).x - gapX, y: touch.location(in: view).y - gapY) 136 } 137 } 138 } 139 } 140 141 override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 142 // touchesBeganと同じ処理だが、gapXとgapYはタッチ中で同じものを使い続ける 143 144 // 最初にタッチした指のみ取得 145 if let touch = touches.first { 146 // タッチしたビューをviewプロパティで取得する 147 if let touchedView = touch.view { 148 // tag1のものを動かす 149 if touchedView.tag == 1 { 150 // gapX,gapYの取得は行わない 151 touchedView.center = CGPoint(x: touch.location(in: view).x - gapX, y: touch.location(in: view).y - gapY) 152 153 154 } 155 } 156 } 157 } 158 159 override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 160 161 // gapXとgapYの初期化 162 gapX = 0.0 163 gapY = 0.0 164 } 165 166 override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) { 167 // touchesEndedと同じ処理 168 self.touchesEnded(touches, with: event) 169 } 170 171 172 //カメラロールから写真を選択する処理 173 @IBAction func choosePicture() { 174 // カメラロールが利用可能か? 175 if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { 176 // 写真を選ぶビュー 177 let pickerView = UIImagePickerController() 178 // 写真の選択元をカメラロールにする 179 // 「.camera」にすればカメラを起動できる 180 pickerView.sourceType = .photoLibrary 181 // デリゲート 182 pickerView.delegate = self 183 // ビューに表示 184 self.present(pickerView, animated: true) 185 } 186 } 187 188 189 190 191 192 193 // 写真を選んだ後に呼ばれる処理 194 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 195 // 選択した写真を取得する 196 let image = info[UIImagePickerControllerOriginalImage] as! UIImage 197 198 getphoto.frame = CGRect(x: 0, y: 0, width: screenWidth / 3, height: screenHeight / 3) 199 200 201 getphoto.center = CGPoint(x:screenWidth/2, y:screenHeight/2) 202 203 204 // ビューに表示する 205 self.getphoto.image = image 206 207 208 209 // 写真を選ぶビューを引っ込める 210 self.dismiss(animated: true) 211 212 } 213 214 215 216 //リコグナイザーの同時検知を許可するメソッド 217 func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 218 return true 219 } 220 221override func didReceiveMemoryWarning() { 222 super.didReceiveMemoryWarning() 223 // Dispose of any resources that can be recreated. 224} 225 226 // ファイルを保存するURLを返す 227 func getDocumentsDirectory() -> URL { 228 let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) 229 let documentsDirectory = paths[0] 230 return documentsDirectory 231 } 232 233 // ファイルに画像を保存する 234 func saveImageToDocumentsDirectory(image: UIImage, name: String) { 235 if let data = UIImagePNGRepresentation(image) { 236 let filename = getDocumentsDirectory().appendingPathComponent(name) 237 try? data.write(to: filename) 238 } 239 } 240 241 /////プレビュー画面へ 242 243 244 @IBAction func push(_ sender: Any) { 245 print("push") 246 let pdfData = NSMutableData() 247 248 //どんな大きさ、位置のものを表示するのか 249 //UIGraphicsBeginImageContextWithOptions(getimage.frame.size, false, 0.0) 250 UIGraphicsBeginPDFContextToData(pdfData, CGRect(x: 0, y: 0, width: screenWidth, height: imageHeight), nil) 251 UIGraphicsBeginPDFPage() 252 253 guard let pdfContext = UIGraphicsGetCurrentContext() else { return } 254 self.view.layer.render(in: pdfContext) 255 UIGraphicsEndPDFContext() 256 257 if let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first { 258 let documentsFileName = documentDirectories + "/test.pdf" 259 //パスを保存して次の画面で表示させる 260 UserDefaults.standard.set(documentsFileName, forKey:"filePath") 261 debugPrint(documentsFileName) 262 pdfData.write(toFile: documentsFileName, atomically: true) 263 264 } 265 266 } 267 268 269} 270 271 272 273

補足情報(FW/ツールのバージョンなど)

Swiftのversionは4.1.2
Xcodeのversionは9.4.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

たぶんですが、self.view.layer.render(in: pdfContext)
では、画面のスクショを保存するようなもので、おっしゃるとおり元の画質は期待できません。

UImageViewではなくUIImageViewが持っているimage(UIImage型)を直接pdfContextに対してdrawするようなコードにしてみてください。

まずは適当な位置やサイズでいいので、UIImageを描画してみて、PDFにしたものを拡大表示して
画質が期待しているものになっているか、の確認からしてみてはいかがでしょうか。

それが出来たらピンクの背景にしたり
画像の姿勢をUIImageViewに合わせたりする方法を順次調べてもらえれば良いかなと思います。

#他にもっと簡単な方法があったらすみません...


追記:

手元でも検証しました。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 5 let path = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("test.pdf") 6 7 let bounds = CGRect(x: 0, y: 0, width: 320, height: 480) 8 if UIGraphicsBeginPDFContextToFile(path, bounds, nil) { 9 UIGraphicsBeginPDFPageWithInfo(bounds, nil) 10 11 let img = UIImage(named: "Hoge") 12 img?.draw(in: CGRect(x: 0, y: 0, width: 20, height: 20)) 13 14 UIGraphicsEndPDFContext() 15 print("OK: (path)") 16 } 17 } 18}

小さく画像を書き出していますが、
イメージ説明

PDFを拡大すると、ちゃんとオリジナルの解像度が維持されていることがわかります。
イメージ説明


更に追記:

これをPDF作成時に呼んでもらえれば高画質のままPDFに画像が載るはずです。

swift

1 /// カレントコンテキストに対してUIImageViewが持つimageをUIImageViewの姿勢のまま描画します。 2 private func draw(imageView: UIImageView) { 3 guard let image = imageView.image else { return } 4 guard let ctx = UIGraphicsGetCurrentContext() else { return } 5 let orgTransform = imageView.transform 6 imageView.transform = .identity 7 let orgFrame = imageView.frame 8 imageView.transform = orgTransform 9 10 ctx.saveGState() 11 ctx.translateBy(x: +orgFrame.midX, y: +orgFrame.midY) 12 ctx.concatenate(orgTransform) 13 ctx.translateBy(x: -orgFrame.midX, y: -orgFrame.midY) 14 15 image.draw(in: orgFrame.aspectFit(contentSize: image.size, stretchble: true, integer: false)) 16 17 ctx.restoreGState() 18 }

投稿2019/02/04 01:52

編集2019/02/05 04:14
takabosoft

総合スコア8356

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

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

mimamo

2019/02/04 04:17

ご回答ありがとうございます! UIImageViewだとrenderできるのですがUIImageだとできないようです、、 なのでUIImageViewの大きさをあらかじめ大きくしてからrenderしようと思うのですが、画像の姿勢をUIImageViewに合わせるというのがあまり理解できないでいます。 画像(getphot)oの座標や、回転、大きさを取得してそれを再び配置するということでしょうか。 よろしくお願いします。
mimamo

2019/02/04 07:01

ありがとうございます。 let bin: UIImage = UIImage(named:"bin.jpg")! bin.draw(in: CGRect(x: 100, y: 100, width: 100, height: 100)) を override func viewDidLoad() { super.viewDidLoad() } の中に書いたりしてみたのですが表示させることができませんでした。 色々調べてみたのですが正しいコードの仕方がわからなかったので、教えていただけると幸いです。
takabosoft

2019/02/04 07:09

PDFの描画周りのところを変えましょうという提案ですので、 self.view.layer.render(in: pdfContext) を let bin: UIImage = UIImage(named:"bin.jpg")! bin.draw(in: CGRect(x: 100, y: 100, width: 100, height: 100)) などと置き換えてみてください。
mimamo

2019/02/04 07:49

間違えていました。ありがとうございます。 表示することは出来たのですが、画像がとても荒くなってしまったので let pdfData = NSMutableData() let bin: UIImage = UIImage(named:"bin-1.jpg")! //元画像の大きさのUIImageViewを作る let pdfImageView = UIImageView(image: bin) //どんな大きさ、位置のものを表示するのか UIGraphicsBeginPDFContextToData(pdfData, pdfImageView.bounds, nil) UIGraphicsBeginPDFPage() guard let pdfContext = UIGraphicsGetCurrentContext() else { return } pdfImageView.layer.render(in: pdfContext) の方がよいのかなと思いました。 これだと画質を維持することはできるのですが、ひとつのUIImageViewしかPDFにできません。 getphoto(UIIImageView)も一緒に画質を保ったままPDFにしたいので storyboard上でUIViewを作り(コードで作るとよくわからないことになったので) その中にgetphotoとgetimageを設置して 新しく作ったUIViewの大きさをpdfImageView.boundsに変更してみたのですが、 UIViewだけ大きさが変わり、中身のgetphotoとgetimageの大きさを変えることができませんでした。 中身のUIImageViewも一緒に大きさを変えることはできないのでしょうか、、 アドバイスよろしくお願いいたします。
takabosoft

2019/02/04 08:21

回答欄に追記しました。UIImageを直接drawすればPDFでは元の解像度が維持されるはずですが・・・何か食い違っていますかね?UIImageView系でやるのはおすすめしません。
mimamo

2019/02/05 01:33 編集

ありがとうございます!ひとまずピンクのUIImageViewの画質は綺麗なままPDFにすることができました。 UIImageViewをあまり使わないでやるとなると、getphotoも一緒にPDFにする場合はどのような考え方でコーディングするべきなのでしょうか、、 よろしくお願いします。
takabosoft

2019/02/05 00:25

UIGraphicsBeginPDFPage()~UIGraphicsEndPDFContext()の間に描画コードを書けば、その分だけPDFに反映されます。2枚画像をdrawすれば2枚PDFに反映されます。
mimamo

2019/02/05 01:39 編集

なるほど、ありがとうございます! getphotoはタッチで自由に場所や角度、大きさを変えられるようにしてあります。 drawするために、getimageに対する相対的な座標と大きさを出し、最後に回転させるっといったような感じで、情報をひとつひとつ取得してdraw必要があるのでしょうか。
takabosoft

2019/02/05 02:07 編集

ですね、UIImageView(=getphoto)と同じ姿勢でUIImageをdrawするようになんとかしないといけません。 現在載せてもらっているコードからはgetphotoをどうやって移動・拡大縮小・回転しているか読み取れないので、その辺載せてもらえればある程度やり方は提案できると思います。 移動はUIImageView.center、拡大縮小と回転はUIImageView.transformでしたかね?
mimamo

2019/02/05 02:36

ありがとうございます! ずっと苦戦しているところなので、心強いです、、 移動、拡大縮小、回転はおっしゃる通りです。 コードの方、変更させていただきました。 extensionまで載せきれなかったので、長文となってしまいますがこちらに載せておきます。 extension CGRect { func aspectFit(contentSize: CGSize, stretchble: Bool, integer: Bool) -> CGRect { let xZoom = width / contentSize.width let yZoom = height / contentSize.height let zoom = stretchble ? min(xZoom, yZoom) : min(xZoom, yZoom, 1) if integer { let newWidth = max(Int(contentSize.width * zoom), 1) let newHeight = max(Int(contentSize.height * zoom), 1) let newX = Int(origin.x) + (Int(width) - newWidth) / 2 let newY = Int(origin.y) + (Int(height) - newHeight) / 2 return CGRect(x: newX, y: newY, width: newWidth, height: newHeight) } else { let newWidth = contentSize.width * zoom let newHeight = contentSize.height * zoom let newX = origin.x + (width - newWidth) / 2 let newY = origin.y + (height - newHeight) / 2 return CGRect(x: newX, y: newY, width: newWidth, height: newHeight) } } } extension CGRect { /** Creates a rectangle with the given center and dimensions - parameter center: The center of the new rectangle - parameter size: The dimensions of the new rectangle */ init(center: CGPoint, size: CGSize) { self.init(x: center.x - size.width / 2, y: center.y - size.height / 2, width: size.width, height: size.height) } /** the coordinates of this rectangles center */ var center: CGPoint { get { return CGPoint(x: centerX, y: centerY) } set { centerX = newValue.x; centerY = newValue.y } } /** the x-coordinate of this rectangles center - note: Acts as a settable midX - returns: The x-coordinate of the center */ var centerX: CGFloat { get { return midX } set { origin.x = newValue - width * 0.5 } } /** the y-coordinate of this rectangles center - note: Acts as a settable midY - returns: The y-coordinate of the center */ var centerY: CGFloat { get { return midY } set { origin.y = newValue - height * 0.5 } } // MARK: - "with" convenience functions /** Same-sized rectangle with a new center - parameter center: The new center, ignored if nil - returns: A new rectangle with the same size and a new center */ func with(center: CGPoint?) -> CGRect { return CGRect(center: center ?? self.center, size: size) } /** Same-sized rectangle with a new center-x - parameter centerX: The new center-x, ignored if nil - returns: A new rectangle with the same size and a new center */ func with(centerX: CGFloat?) -> CGRect { return CGRect(center: CGPoint(x: centerX ?? self.centerX, y: centerY), size: size) } /** Same-sized rectangle with a new center-y - parameter centerY: The new center-y, ignored if nil - returns: A new rectangle with the same size and a new center */ func with(centerY: CGFloat?) -> CGRect { return CGRect(center: CGPoint(x: centerX, y: centerY ?? self.centerY), size: size) } /** Same-sized rectangle with a new center-x and center-y - parameter centerX: The new center-x, ignored if nil - parameter centerY: The new center-y, ignored if nil - returns: A new rectangle with the same size and a new center */ func with(centerX: CGFloat?, centerY: CGFloat?) -> CGRect { return CGRect(center: CGPoint(x: centerX ?? self.centerX, y: centerY ?? self.centerY), size: size) } } extension UIImage{ // 画質を担保したままResizeするクラスメソッド. func ResizeUIImage(width : CGFloat, height : CGFloat)-> UIImage!{ let size = CGSize(width: width, height: height) UIGraphicsBeginImageContextWithOptions(size, false, 0.0) var context = UIGraphicsGetCurrentContext() self.draw(in: CGRect(x:0, y:0, width:size.width, height:size.height)) var image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } }
takabosoft

2019/02/05 04:20 編集

回答に追記しました。func draw(imageView: UIImageView)関数を適当に組み込んでもらい、 PDF作成中にdraw(imageView: getphoto)とでも呼んでもらえれば、高画質のままPDFに写真が載ると思いますので、やってみてください。
mimamo

2019/02/06 07:00

お返事遅くなり申し訳ないです。 ありがとうございます!! 無事2つを表示させることはできました!涙 getphotoについてひとつお伺いしたいです。 画面サイズと同様のサイズのPDFを作る場合だと 画像の姿勢を保ったまま2つの画像を一緒に PDFにすることができたのですが、 作りたいPDFのサイズは下記の通りになります。 let pdfImageView = UIImageView(image: bin) UIGraphicsBeginPDFContextToData(pdfData, pdfImageView.bounds, nil) また、bin(UIImage)の描画もbin.draw(in: pdfImageView.bounds)としています。 getimageに対するgetphotoの姿勢を保ったままこの大きさのPDFを作成する場合、 getphotoの座標や大きさに対してxにはpdfImaveView.bounds.width/screenWidthをかけ yにはpdfImageView.bounds.height/imageHeightをかければいいのかなと思い とりあえず頂いたコードの中身の image.draw を image.draw(in: orgFrame.aspectFit(contentSize: CGSize(width: image.size.width * pdfImageView.bounds.width/screenWidth,height:image.size.height * pdfImageView.bounds.height/imageHeight), stretchble: true, integer: false)) と変更してみたのですが変わりがありませんでした。 transformの方は、どのように変更すればいいのかわからずまだ操作しておりません。 よろしくお願いします。
takabosoft

2019/02/06 08:01

んー、たぶんですが、UIGraphicsBeginPDFContextToDataの後でpdfContextに対してscaleBy https://developer.apple.com/documentation/coregraphics/cgcontext/1454659-scaleby で描画サイズをスケーリングしてあげれば期待した結果になりそうな気がするのでお試しください。 そのスケーリングを掛けた状態でdraw(imageView: getphoto)などを実行すれば問題ないはずです。
mimamo

2019/02/06 09:23 編集

ありがとうございます! let pdfImageView = UIImageView(image: bin) let gamen:CGRect = CGRect(x: 0, y: 0, width: screenWidth, height: imageHeight) //追加 UIGraphicsBeginPDFContextToData(pdfData, gamen, nil) let pdfContext1 = UIGraphicsGetCurrentContext() //追加 pdfContext1?.scaleBy(x: pdfImageView.bounds.width/screenWidth, y: pdfImageView.bounds.height/imageHeight) //追加 print("pdfContex1 = (pdfContext1)") //追加 UIGraphicsBeginPDFPage() guard let pdfContext2 = UIGraphicsGetCurrentContext() else { return } print("pdfContex2 = (pdfContext2)") //追加 bin.draw(in: gamen) draw(imageView: getphoto) UIGraphicsEndPDFContext() このような感じでコーディングしてみたのですがサイズ変更が出来ていないようでした。 初歩的なことで申し訳ないのですがご教授よろしくお願いします、、。
takabosoft

2019/02/07 06:02

ああ、すみません、UIGraphicsBeginPDFPage()の後で.scaleByしてみてください。この辺は動かなくてもいろいろやってみてください。私もいつまでも手取り足取りというわけにはいきませんので。
mimamo

2019/02/07 09:04

全体的に画質を保ったままサイズを変えることができました! いろいろ質問にお答えいただきありがとうございます、、。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問