      Fetch an image data with the original size.
      */
     @objc public func fetchImageData(options: PHImageRequestOptions? = nil, completeBlock: @escaping (_ imageData: Data?, _ info: [AnyHashable: Any]?) -> Void) {
-        self.requestID = getImageDataManager().fetchImageData(for: self, options: options, completeBlock: completeBlock)
+        if self.originalAsset != nil {
+            self.requestID = getImageDataManager().fetchImageData(for: self, options: options, completeBlock: completeBlock)
+        } else {
+            if let image = self.image {
+                if self.hasAlphaChannel(image: image) {
+                    completeBlock(UIImagePNGRepresentation(image), nil)
+                } else {
+                    completeBlock(UIImageJPEGRepresentation(image, 0.9), nil)
+                }
+            } else {
+                assert(false)
+            }
+        }
     }
     
     /**

     Fetch an image with the original size.
     */
    @objc public func fetchOriginalImage(options: PHImageRequestOptions? = nil, completeBlock: @escaping (_ image: UIImage?, _ info: [AnyHashable: Any]?) -> Void) {
        if let _ = self.originalAsset {
            self.requestID = getImageDataManager().fetchImageData(for: self, options: options, completeBlock: { (data, info) in
                var image: UIImage?
                if let data = data {

                                 options: PHImageRequestOptions? = nil,
                                 contentMode: PHImageContentMode = .aspectFit,
                                 completeBlock: @escaping (_ image: UIImage?, _ info: [AnyHashable: Any]?) -> Void) {
        if self.originalAsset != nil {
            self.requestID = getImageDataManager().fetchImage(for: self, size: size, options: options, contentMode: contentMode, completeBlock: completeBlock)
        } else {
            completeBlock(self.image, nil)
