###前提・実現したいこと
CGDataProviderReleaseDataCallbackが呼ばれるようにしたい。
referanceの読み方がわかればできるのかもしれませんが、理解できておりません。。
###発生している問題・エラーメッセージ
CGDataProviderReleaseDataCallback が呼ばれないため?実機テスト時の処理が固まる。
###該当のソースコード
import UIKit import CoreImage class TransparentImage: NSObject { func transparentImage (image: UIImage) -> UIImage{ //画面に表示されたものと同じ画像が渡ってくる。拡大、縮小されていればその画像。 var editedimage:UIImage //あとでletに変える let width :Int = Int((image.cgImage!.width)) let height :Int = Int((image.cgImage!.height)) let imageData = image.cgImage!.dataProvider!.data //cgimageのデータ let datalenght = CFDataGetLength(imageData) var rawData = [UInt8](repeating: 0, count: datalenght) CFDataGetBytes(imageData,CFRange(location: 0, length: datalenght),&rawData) //画像データをrawDataへ転送 print("画像のdatalengthの長さ\(datalenght)") print("初期画像のサイズ cgimage width:\(width)") print("初期画像のサイズ cgimage height:\(height)") print("初期画像のサイズ uiimage width:\(image.size.width)") print("初期画像のサイズ uiimage width:\(image.size.height)") print("AlphaInfo:\(image.cgImage!.alphaInfo.rawValue)") print("scale:\(image.scale)") // ###画像の生成### let provider = CGDataProvider(dataInfo: nil,data: rawData, size: datalenght,releaseData: releaseData) let colorSpaceRef = image.cgImage!.colorSpace let bitmapInfo = image.cgImage!.bitmapInfo let bitsPerComponent:Int = image.cgImage!.bitsPerComponent let bitsPerPixel = image.cgImage!.bitsPerPixel let bytesPerRow = image.cgImage!.bytesPerRow let cgImage = CGImage(width: width, height: height, bitsPerComponent: bitsPerComponent, bitsPerPixel: bitsPerPixel, bytesPerRow:bytesPerRow, space: colorSpaceRef!, bitmapInfo: bitmapInfo, provider: provider!, decode: nil, shouldInterpolate: false, intent: .defaultIntent) editedimage = UIImage(cgImage:cgImage!, scale:image.scale, orientation:image.imageOrientation) // print ("colorSpaceRef:\(colorSpaceRef)") print("bitmapInfo:\(bitmapInfo)") print("加工後画像幅:\(editedimage.size.width)") print("加工後画像高さ:\(editedimage.size.height)") print("bitsPerComponent:\(bitsPerComponent)") print("bitsPerPixel:\(bitsPerPixel)") print("bytesPerRow:\(bytesPerRow)") return editedimage } let releaseData: CGDataProviderReleaseDataCallback = { (info: UnsafeMutableRawPointer?, data: UnsafeRawPointer, size: Int) -> () in // https://developer.apple.com/reference/coregraphics/cgdataproviderreleasedatacallback print("callback") return }
###補足情報(言語/FW/ツール等のバージョンなど)
swift3 iPhone7Plus
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/05 13:38
退会済みユーザー
2017/06/08 14:40