有没有办法检查UIImage是否已解压缩?

时间:2013-02-20 23:49:06

标签: ios objective-c uiimage core-graphics

我相信你们大多数人已经在后台线程上处理强制解压缩以提高渲染性能。我的问题是,是否有办法检查图像是否已解压缩。

1 个答案:

答案 0 :(得分: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;
        }
    }

Demo Reference