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

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

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

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

1回答

1199閲覧

オリジナル印刷アプリの画質を上げるには?

haramiyu

総合スコア12

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2019/05/20 11:46

編集2022/01/12 10:55

アプリ開発初心者です。オリジナルの印刷アプリを作っています。最後に印刷すると解像度が元画像より粗くなり、もともと作っていたpng画像と違い、印刷後の画像がくっきりせず質が落ちるのですがどうしたらいいですか?

import UIKit class DesignPrintViewController: UIViewController,UIPrintInteractionControllerDelegate { var opePrint :Int=0 var saveData:UserDefaults = UserDefaults.standard @IBOutlet var imageView:UIImageView! @IBOutlet weak var UIView: UIView! var pageSize = CGSize(width: 210 / 25.4 * 500, height: 297 / 25.4 * 500) let imageSample = UIImageView()
@IBAction func printContent(_ sender: UIButton) { let rect = UIView.bounds print("通過・rect -> (rect)") UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0) let CGContextRef : CGContext = UIGraphicsGetCurrentContext()! UIView.layer.render(in: CGContextRef) let backgroundImage : UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() let shareText = "Apple - Apple iPhone X" let shareWebsite = NSURL(string: "https://www.apple.com/jp/iphone-x/")! let shareImage = backgroundImage var activityItems = [] as [Any] activityItems = [shareText, shareWebsite] as [Any] activityItems.append(shareImage) let activityController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil) if UIDevice.current.userInterfaceIdiom == .pad { activityController.popoverPresentationController?.sourceView = self.view present(activityController, animated: true, completion: nil) print("iPadです・印刷物はフチなしで印刷されます") } else { present(activityController, animated: true, completion: nil) print("iPhoneです・印刷物はフチなしで印刷されます") } let pic = UIPrintInteractionController.shared pic.delegate = self } func printInteractionController ( _ printInteractionController: UIPrintInteractionController, choosePaper paperList: [UIPrintPaper]) -> UIPrintPaper { for i in 0..<paperList.count { let paper: UIPrintPaper = paperList[i] print("paperListのピクセル is ((paper.paperSize.width, paper.paperSize.height))") } print("\npageSizeピクセル -> (pageSize)") let bestPaper = UIPrintPaper.bestPaper(forPageSize: pageSize, withPapersFrom: paperList) print("paperSizeミリ -> ((bestPaper.paperSize.width / 72.0 * 25.4, bestPaper.paperSize.height / 72.0 * 25.4))") print("bestPaper -> ((bestPaper.printableRect.origin.x / 72.0 * 25.4, bestPaper.printableRect.origin.y / 72.0 * 25.4, bestPaper.printableRect.size.width / 72.0 * 25.4, bestPaper.printableRect.size.height / 72.0 * 25.4))\n") return bestPaper }

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

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

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

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

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

y_waiwai

2019/05/20 11:49

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
haramiyu

2019/05/20 11:53

教えていただきありがとうございます。今直してみました。
guest

回答1

0

printingItemにもとのPNG画像よりも画質が低いUIImageを作って渡しているように見えますが
おそらく期待した解像度を得るにはUIImageではなくPDFを作りPDFファイルのURLかDataを渡せば良いのかなと思いました。
※実際に試したわけではありませんので、検証してください。

https://developer.apple.com/documentation/uikit/uiprintinteractioncontroller/1618157-printingitem

The object must be an instance of the NSURL, NSData, UIImage, or ALAsset class. An object of the first two types must reference or contain image data or PDF data.

PDFの作成方法については、iOS11以上であればPDFKitを使うのが良いのかなと思います。
参考:
【PDFKit】Swiftでプレゼン資料を作る
https://qiita.com/sotozaki/items/6a21167e7a357ae8b26d


ただ、以前このような提案をしても、実装が難しいという意見を頂いたことがあり、その方は一時的に大きなUIViewを作り、それをUIImage化することで高解像度の画像を生成して解決されていました。あまりおすすめはしませんが、こういった方法もあるということを提示させていいただきます。

投稿2019/05/21 02:02

編集2019/05/21 02:03
takabosoft

総合スコア8356

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

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

haramiyu

2019/05/21 11:28

答えていただきありがとうございます。 そうですね。UIImageViewを使っています。 一時的に大きなUIViewを作り、それをUIImage化するというのはどうやってするんですか? pdfのやり方は、参考サイトなどを見てみましたが、まだ経験が浅いためあまり理解できませんでした。 iosも11以上ではなく、10.14.4でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問