我有一個UIImage,我想減少每個點的rgb值,我該怎麼做? 或者如何將一種顏色更改爲圖像中的另一種顏色? [Xcode8,swift3]如何更改iOS中圖像的rgb值?
0
A
回答
0
,如果你想改變單個像素這個答案只適用..
首先使用UIImage.cgImage
獲得CGImage
。接下來,使用CGBitmapContextCreate
和CGColorSpaceCreateDeviceRGB
色彩空間以及您想要的任何混合模式創建位圖上下文。
然後調用CGContextDrawImage
將圖像繪製到由您提供的像素數組支持的上下文。清理,你現在有一個像素陣列。
- (uint8_t*)getPixels:(UIImage *)image {
CGColorSpaceRef cs= CGColorSpaceCreateDeviceRGB();
uint8_t *pixels= malloc(image.size.width * image.size.height * 4);
CGContextRef ctx= CGBitmapContextCreate(rawData, image.size.width, image.size.height, 8, image.size.width * 4, cs, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(cs);
CGContextDrawImage(ctx, CGRectMake(0, 0, image.size.width, image.size.height));
CGContextRelease(ctx);
return pixels;
}
,但是你想修改的像素。然後重新從像素的圖像..
- (UIImage *)imageFromPixels:(uint8_t *)pixels width:(NSUInteger)width height:(NSUInteger)height {
CGDataProviderRef provider = CGDataProviderCreateWithData(nil, pixels, width * height * 4, nil);
CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
CGImageRef cgImageRef = CGImageCreate(width, height, 8, 32, width * 4, cs, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast, provider, nil, NO, kCGRenderingIntentDefault);
pixels = malloc(width * height * 4);
CGContextRef ctx = CGBitmapContextCreate(pixels, width, height, 8, width * 4, cs, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast);
CGContextDrawImage(ctx, (CGRect) { .origin.x = 0, .origin.y = 0, .size.width = width, .size.height = height }, cgImage);
CGImageRef cgImage = CGBitmapContextCreateImage(ctx);
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
CGContextRelease(ctx);
CGColorSpaceRelease(cs);
CGImageRelease(cgImageRef);
CGDataProviderRelease(provider);
free(pixels);
return image;
}
0
其中一種方法是使用圖像作爲模板並設置所需的顏色。
extension UIImageView {
func changeImageColor(color:UIColor) -> UIImage
{
image = image!.withRenderingMode(.alwaysTemplate)
tintColor = color
return image!
}
}
//Change color of logo
logoImage.image = logoImage.changeImageColor(color: .red)
相關問題
- 1. 如何更改matlab中rgb圖像的像素值
- 2. Swift 3 - 保存圖像更改RGB值
- 3. 如何更改圖像的rgb分量的值
- 4. 更改RGB圖像中多個像素的值
- 5. 如何更改C++中的RGB值
- 6. 如何使用python更改位圖圖像上的每個像素的RGB值?
- 7. Python枕頭更改像素的RGB值?
- 8. 改變LSB的圖像RGB值給予
- 9. 如何提取圖像的RGB值?
- 10. 如何獲取圖像的RGB值?
- 11. 如何獲取'TYPE_3BYTE_BGR'圖像的RGB值?
- 12. 如何更改RGB圖像的動態範圍?
- 13. Java,圖像更改爲錯誤的rgb值
- 14. 如何獲得返回rgb,十六進制值的圖像的像素? ios
- 15. 查找OpenCV中RGB圖像的中值?
- 16. iOS中的UIColor RGB值
- 17. OpenCV:如何填充每個像素的每個RGB顏色值的RGB圖像?
- 18. 如何將在原始RGB圖像的某個像素中賦予閾值的灰度圖像轉換爲RGB?
- 19. iOS - 逐幀更改圖像
- 20. Python成像處理(PIL) - 更改圖像的整體RGB
- 21. 如何更改數組中的值並將其轉換爲RGB
- 22. 如何更改SDL表面中的RGB值?
- 23. 如何更改Python中圖像的像素值?
- 24. 如何在iOS中更改部分透明圖像的顏色?
- 25. 如何在iOS中更改單元格圖像的大小
- 26. 如何更改UIButton中的UIButton背景圖像點擊ios
- 27. 如何根據ios中的方向更改圖像位置?
- 28. 如何緩存可以稍後在IOS中更改的圖像?
- 29. 如何更改ios中源圖像的臉部膚色?
- 30. 如何更改標籤以符合iOS中的圖像?
感謝,但我完成我的工作CIFilter,:Q –