【发布时间】:2019-10-25 16:35:40
【问题描述】:
如何找到 CGImage 的各个像素的 alpha 值?
CGImage 的 decode 属性返回了一个数组。需要探测这个数组的值吗?
或者我应该查看dataProvider 属性吗?
我想遍历像素并获取每个像素的 alpha 值。
编辑:
链接为重复的问题是一个objective-c 问题。我只知道斯威夫特。
【问题讨论】:
标签: swift image core-graphics
如何找到 CGImage 的各个像素的 alpha 值?
CGImage 的 decode 属性返回了一个数组。需要探测这个数组的值吗?
或者我应该查看dataProvider 属性吗?
我想遍历像素并获取每个像素的 alpha 值。
编辑:
链接为重复的问题是一个objective-c 问题。我只知道斯威夫特。
【问题讨论】:
标签: swift image core-graphics
您询问了 CGImage,但这应该相对容易修改。我确实认为需要探测这个数组的值,所以你可以这样做:
func imageIsEmpty(_ image: UIImage) -> Bool {
guard let cgImage = image.cgImage,
let dataProvider = cgImage.dataProvider else
{
return true
}
let pixelData = dataProvider.data
let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)
let imageWidth = Int(image.size.width)
let imageHeight = Int(image.size.height)
for x in 0..<imageWidth {
for y in 0..<imageHeight {
let pixelIndex = ((imageWidth * y) + x) * 4
let r = data[pixelIndex]
let g = data[pixelIndex + 1]
let b = data[pixelIndex + 2]
let a = data[pixelIndex + 3]
if a != 0 {
if r != 0 || g != 0 || b != 0 {
return false
}
}
}
}
return true
}
我从How to check if a uiimage is blank? (empty, transparent)@mattdedek 找到了这个答案
他使用这篇文章提出了他的解决方案: Get Pixel Data of ImageView from coordinates of touch screen on xcode?
【讨论】: