İçeriğe geç

İOS ile Gif yaratmak ve görüntülemek

İOS

Merhabalar bu yazımda İOS uygulamalarınızda nasıl GİF uzantılı dosya yaratıp UIImageView üzerinde oynatırız bunun örneğini vereceğim.

Bildiğimiz gibi GİF‘ler fotoğrafların ard arda sıralanmış haalidir. Bir formattır. Bizde bu formatta bir resim yaratacağız. Bunun için İOS kütüphanelerinden yararlanacağız.

Resim işlemleri deyince tabiki Core Graphics gelir. Aşağıdaki verdiğim örnekteki yazdığım fonksiyon ile bu işlemi kolaylıkla gerçekleştirebileceksiniz.

import UIKit
import CoreGraphics
import ImageIO
import MobileCoreServices
import CoreFoundation
import AssetsLibrary

func createGIF(with images: [UIImage], loopCount: Int = 0, frameDelay: Double) -> NSData? {
     
     let loopProperties = [kCGImagePropertyGIFDictionary as String: [kCGImagePropertyGIFLoopCount as String: loopCount]]
     let frameProperties = [kCGImagePropertyGIFDictionary as String: [kCGImagePropertyGIFDelayTime as String: frameDelay]]
     
     let documentsDirectory = NSTemporaryDirectory()
     
     let url = NSURL(fileURLWithPath: documentsDirectory).URLByAppendingPathComponent("test.gif")
     
     let destination = CGImageDestinationCreateWithURL(url, kUTTypeGIF, Int(images.count), nil)
     CGImageDestinationSetProperties(destination!, loopProperties)
     
     for i in 0..<images.count {
     CGImageDestinationAddImage(destination!, images[i].CGImage!, frameProperties)
     }
     
     CGImageDestinationFinalize(destination!)
     
     return NSData(contentsOfURL: url)!
        
     }

Yukarda yazdığım fonksiyon sayesinde uygulamanızın bulunduğu alt directory üzerine test.gif adında bir gif dosyası yaratmış oluyoruz. Fonksiyon geriye bu dosyayı data olarak döndürüyor. Bizde bu gif uzantılı dosyayı kendi uygulamamızda oynatmamız için Github üzerinden hazırlanmış bir gif oynatma dosyasını yüklememiz gerek. Farklı kütüphanelerde elbette bulabilirsiniz. Link

Daha sonra dosya içerisindeki sınıfı ve görüntüleme işlemini aşağıdaki şekilde yapabilirsiniz.

@IBOutlet weak var imgview: UIImageView!
var imgs:[UIImage]!
      
imgs = [UIImage(named: "bal.png")!,UIImage(named: "6.jpg")!,UIImage(named: "7.png")!]

let gifView = UIImage.gifWithData(createGIF(with: imgs, frameDelay: 1)!)
        
imgview.image = gifView

Not: İOS işletim sistemi yüklü cihazlarda Photos üzerinden gif oynatılamaz.

Tarih:iOS

Bu yazı yorumlara kapalı.

Copyright © 2021 Kenan Atmaca