有没有一种方法可以检查UIImage是否已被解压缩?

4

我相信大多数人都曾经在后台线程上处理强制解压以提高渲染性能。我的问题是是否有一种方法可以检查图像是否已被解压缩。

1个回答

0

以下技巧帮助我检查图像是否已被解压缩。这是一段简单易懂的代码:

import UIKit
    class ViewController: UIViewController {
        var compressedImage:NSString?
        var decompressedImage:NSString?

        override func viewDidLoad() {
            super.viewDidLoad()

            let image = compressImage()
            var imageView = UIImageView(image: image)
            //self.view.addSubview(imageView)

          let decompressImage = deCompressImage(image: image)
            let imageData =  Data(UIImagePNGRepresentation(decompressImage)! )
            print("*****  Size after decompred \(imageData.description) **** ")
            imageView = UIImageView(image: decompressImage)
            decompressedImage = imageData.description as NSString?

            let decompressed = checkImageBeenDecompressed(decompressedImage: decompressedImage!, compressedImage: compressedImage!)
            print(decompressed)
                   //self.view.addSubview(imageView)

        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }


        func checkImageBeenDecompressed(decompressedImage:NSString , compressedImage:NSString) -> Bool {
             let decompressedSize  = Int( decompressedImage.getNumFromString()! )
             let  compressedSize  =   Int (compressedImage.getNumFromString()! )
             if( decompressedSize!  >  compressedSize! ) {
                print("Image has been decompressed")
               return true
            }
            print("Image has not been decompressed")
            return false
        }


        func compressImage() -> UIImage {

            let oldImage = UIImage(named: "background.jpg")
            var imageData =  Data(UIImagePNGRepresentation(oldImage!)! )
            print("***** Original Uncompressed Size \(imageData.description) **** ")
            imageData = UIImageJPEGRepresentation(oldImage!, 0.025)!
            print("***** Compressed Size \(imageData.description) **** ")
            compressedImage = imageData.description as NSString?
            let image = UIImage(data: imageData)
            return image!
        }


        func deCompressImage(image:UIImage) -> UIImage {
            UIGraphicsBeginImageContextWithOptions(image.size, true, 0)
            image.draw(at: CGPoint.zero)
            let decompressedImage = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return decompressedImage!
            }

    }


    extension NSString {
        func getNumFromString() -> String? {
            var numberString: NSString?
            let thisScanner = Scanner(string: self as String)
            let numbers = NSCharacterSet(charactersIn: "0123456789")
            thisScanner.scanUpToCharacters(from: numbers as CharacterSet, into: nil)
            thisScanner.scanCharacters(from: numbers as CharacterSet, into: &numberString)
            return numberString as? String;
        }
    }

演示参考


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接