我有一個UIImage,我想編輯(比如,使每第二行像素黑色)。現在我知道從圖像中提取PNG或JPEG數據的功能,但這是原始數據,我不知道png/jpeg文件如何工作。有沒有一種方法可以將每個像素的顏色數據提取到數組中?然後使用數組中的數據創建一個新的UIImage?編輯UIImage
2
A
回答
0
Create a CGBitmapContext和draw the UIImage's CGImage into it。適當的Clobber像素字節,然後create a new CGImage(and UIImage,如果需要)從字節。
主要理由這樣做是CGImage支持各種各樣的像素格式,這將不樂趣,您可以嘗試支持,如果你嘗試用任何形式給定的CGImage的遭遇工作已經創建了。
1
這是我花了做同樣的事情(這爲8位位圖背景灰度圖沒有alpha步驟:
// Allocate memory for image data.
bitmapData = malloc(bitmapByteCount);
// Use the generic Grey color space.
colorSpace = CGColorSpaceCreateDeviceGray();
// Create the bitmap context.
context = CGBitmapContextCreate (bitmapData, pixelsWide, pixelsHigh, 8, bitmapBytesPerRow, colorSpace, kCGImageAlphaNone);
現在它說,在文檔中,你可以傳遞NULL到BitmapData參數和有該方法處理的內存中的所有malloc'ing。我發現,如果你這樣做,你不能再使用CGBitmapContextGetData得到的指針要經過字節的數據。
// Draw the image into the context
CGContextDrawImage(context, CGRectMake(0, 0, pixelsWide, pixelsHigh), imageRef);
要閱讀在像素我在數據中的位置,使用:
unsigned char *pointerToPixelData = CGBitmapContextGetData(context);
pixelValue = *(pointerToPixelData + i);
當您完成後,不要忘記釋放所有內容並釋放malloc'd內存。
希望這有助於
戴夫
相關問題
- 1. 傳遞UIImage到UIImagePickerController進行編輯
- 2. 如何將UIView轉換(編輯)爲UIImage?
- 3. UIImage上下文編輯導致SIGABRT/EXC_BAD_ACCESS
- 4. iOS UIImage剪輯到路徑
- 5. 將編輯好的UIImage文件保存到同一個文件
- 6. 爲什麼編輯像素後我的UIImage旋轉?
- 7. 上傳的UIImage base64編碼
- 8. 編碼/解碼的UIImage的
- 9. 更改一個UIImage編程
- 10. UIImage視圖編碼爲base64
- 11. UIImage Base64編碼失敗
- 12. 剪輯的UIImage到UIBezierPath(未掩蔽)
- 13. 設置剪輯UIImage的UIBezierPath的動畫
- 14. GWT編輯和副編輯
- 15. Fck編輯器多編輯
- 16. nggrid細胞編輯:編輯
- 17. Django FormWizard預編輯編輯
- 18. UIImage UIImage排序
- 19. 如何使用平移,旋轉和捏手勢編輯後保存UIImage
- 20. Sencha比較編輯值和編輯值之前行編輯
- 21. UIImage + NSCache與[UIImage imageNamed:]
- 22. 編輯
- 23. 編輯
- 24. 編輯
- 25. 編輯
- 26. 編輯()
- 27. 編輯
- 28. 編輯
- 29. 編輯
- 30. ASP.NET - 編程編輯