我需要编辑图像的像素原始二进制值。为此,我做了这个步骤:
我获得了包含图像的十六进制转储的CFData。
我将获取的CFData转换为字符数组(使用convertToArray函数)
之后,我使用convertToBinaryString函数来获取表示十六进制转储的基数2值的字符串。
它可以正常工作并完成小文件的工作,但是当涉及到较大的文件时,它需要永远完成。我找不到更快的方法而努力失败。你能帮帮我吗?
在这里,你可以看看我需要优化的功能:
func convertToArray(imageData : CFData) -> Array<Character>{
let arrayData : Array<Character> = Array(String(NSData(data: imageData)).characters)
print("Array : ")
Swift.print(arrayData)
return arrayData
}
func convertToBinaryString(array : Array<Character>) -> String{
let numberOfChars = array.count
var binaryString = convertHexToBinary(array[1])
for character in 2...numberOfChars - 2{
binaryString = binaryString + convertHexToBinary(array[character])
}
// print("BINARRY ARRAY : ")
// print(binaryString)
return binaryString
}
答案 0 :(得分:0)
我会尝试将此扩展名提供给提供CollectionType
接口的NSData
。看起来它可以让您更轻松地进行修改而无需使用UnsafeMutablePointer
:
由于BytesView
和MutableBytesView
是CollectionType
,它会为您提供下标,索引等,以便您可以遍历数据并进行所需的更改。
与此问题相关的文章,并介绍了链接代码: