[解決済み] PFFileとしてParseにアップロードする前に、画像のサイズを圧縮または縮小するにはどうすればよいですか?(Swift)
2022-12-24 08:59:38
質問
携帯電話で直接撮影した画像ファイルをParseにアップロードしようとしています。しかし、例外が発生します。
キャッチできない例外 'NSInvalidArgumentException', reason: 'PFFile cannot be larger than 10485760 bytes' のため、アプリを終了します。
以下は私のコードです。
最初のビューコントローラーで
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "getImage")
{
var svc = segue.destinationViewController as! ClothesDetail
svc.imagePassed = imageView.image
}
}
画像をアップロードするビューコントローラに
let imageData = UIImagePNGRepresentation(imagePassed)
let imageFile = PFFile(name: "\(picName).png", data: imageData)
var userpic = PFObject(className:"UserPic")
userpic["picImage"] = imageFile`
しかし、まだその写真をParseにアップロードする必要があります。画像のサイズや解像度を小さくする方法はありますか?
どのように解決するのですか?
はい、あなたは
UIImageJPEGRepresentation
の代わりに
UIImagePNGRepresentation
を使うことで、画像ファイルサイズを小さくすることができます。以下のように、UIImageという拡張子を作ればいいのです。
Xcode 8.2 - Swift 3.0.2。
extension UIImage {
enum JPEGQuality: CGFloat {
case lowest = 0
case low = 0.25
case medium = 0.5
case high = 0.75
case highest = 1
}
/// Returns the data for the specified image in JPEG format.
/// If the image object’s underlying image data has been purged, calling this function forces that data to be reloaded into memory.
/// - returns: A data object containing the JPEG data, or nil if there was a problem generating the data. This function may return nil if the image has no data or if the underlying CGImageRef contains data in an unsupported bitmap format.
func jpeg(_ quality: JPEGQuality) -> Data? {
return UIImageJPEGRepresentation(self, quality.rawValue)
}
}
を編集・更新しました。
Xcode 10 Swift 4.2
extension UIImage {
enum JPEGQuality: CGFloat {
case lowest = 0
case low = 0.25
case medium = 0.5
case high = 0.75
case highest = 1
}
/// Returns the data for the specified image in JPEG format.
/// If the image object’s underlying image data has been purged, calling this function forces that data to be reloaded into memory.
/// - returns: A data object containing the JPEG data, or nil if there was a problem generating the data. This function may return nil if the image has no data or if the underlying CGImageRef contains data in an unsupported bitmap format.
func jpeg(_ jpegQuality: JPEGQuality) -> Data? {
return jpegData(compressionQuality: jpegQuality.rawValue)
}
}
使用方法
if let imageData = image.jpeg(.lowest) {
print(imageData.count)
}
関連
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] 「GCC使用時に「Xcode/iOSのライセンスに同意するには管理者権限が必要です。rootでsudoを使用して再実行してください。
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] Swift で app delegate への参照を取得するにはどうすればよいですか?
-
[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法
-
[解決済み】SwiftでUILabelのフォントサイズを変更するにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
制御が非ボイド関数の終了に達する
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法