Search code examples
iosswiftgpuimage

GPUImage doubles image size - iOS/Swift


I am trying to convert an image into grayscale one using GPUImage. I wrote an extension to get my work done. Grayscale thing is okay. But output image has become doubled in size. In my case I need the image to be in exact size. Can someone please help me on this? Any help would be highly appreciated.

This is the extension I wrote

import UIKit
import GPUImage

extension UIImage {

    public func grayscale() -> UIImage?{

        var processedImage = self

        print("1: "+"\(processedImage.size)")

        let image = GPUImagePicture(image: processedImage)

        let grayFilter = GPUImageGrayscaleFilter()
        image?.addTarget(grayFilter)

        grayFilter.useNextFrameForImageCapture()
        image?.processImage()
        processedImage = grayFilter.imageFromCurrentFramebuffer()

        print("2: "+"\(processedImage.size)")

        return processedImage
    }

}

This is the output in console

enter image description here

Edit: I know the image can be resized later on. But need to know why is this happening and is there anything to do to keep the image size as it is using GPUImage.


Solution

  • Try to scale the image later:

    if let cgImage = processedImage.cgImage {
         //The scale value 2.0 here should be replaced by the original image's scale. 
         let scaledImage = UIImage(cgImage: cgImage, scale: 2.0, orientation: processedImage.imageOrientation)
         return scaledImage
    }