LoginSignup
7
4

More than 3 years have passed since last update.

【swift】画像のデータサイズを取得し、バリデーション を実装する

Last updated at Posted at 2020-01-21

#方法


var image:UIImage? = ... //画像を読み込む

//
let imageData:Int = NSData(data: image.jpegData(compressionQuality: 1)!).count

//※画像のデータサイズをKBで表示。
let dataToKB = Double(imageData) / 1000.0
        
//バリデーションを実装。(10MB以下のみ保存可能)
if dataToKB < 10000.0 {
      
      print("画像を保存できます")

      //画像をimageViewに描写させたりする
      self.imageView.image = image
} else {
            
      print("画像データが過大です。10MB以下可能です")
}

#詳しく
##jpegData(compressionQuality: CGFloat)

func jpegData(compressionQuality: CGFloat) -> Data?

指定された画像を含むデータオブジェクトをJPEG形式で返します。

compressionQuality: CGFloatとは?
0.0〜1.0の値として表される、結果のJPEG画像の品質。値0.0は最大圧縮(または最低品質)を表し、値1.0は最小圧縮(または最高品質)を表します。

今回は、最高品質(オリジナルの画質)でデータサイズを確認したいため、compressionQuality: 1にします。

##countする

NSData(data: image.jpegData(compressionQuality: 1)!).count

NSData(data: Data)で、
別のデータオブジェクトの内容でデータオブジェクトを初期化します。

画像をNSData型に変換することで、countメソッドを使うことができます。
countすることで、byteの数をカウントすることができます。

#参考文献

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4