Я проверяю, является ли UIImage темнее или белее. Я хотел бы использовать этот метод, но только для проверки третьей нижней части изображения, а не всего. Интересно, как именно изменить его, чтобы проверить это, я не так разбираюсь в элементах пикселей.Проверьте, является ли изображение темным только нижняя часть
BOOL isDarkImage(UIImage* inputImage){
BOOL isDark = FALSE;
CFDataRef imageData = CGDataProviderCopyData(CGImageGetDataProvider(inputImage.CGImage));
const UInt8 *pixels = CFDataGetBytePtr(imageData);
int darkPixels = 0;
long length = CFDataGetLength(imageData);
int const darkPixelThreshold = (inputImage.size.width*inputImage.size.height)*.25;
//should i change here the length ?
for(int i=0; i<length; i+=4)
{
int r = pixels[i];
int g = pixels[i+1];
int b = pixels[i+2];
//luminance calculation gives more weight to r and b for human eyes
float luminance = (0.299*r + 0.587*g + 0.114*b);
if (luminance<150) darkPixels ++;
}
if (darkPixels >= darkPixelThreshold)
isDark = YES;
Я могу только обрезать эту часть изображения, но это будет неэффективным способом, и это было время.
спасибо очень много, это отличный ответ. – Curnelious
рад помочь. будущие читатели должны заметить, что этот метод не захватывает пиксель пикселя изображения из данных изображения. скорее, он берет линии сканирования между «точками», подразумеваемыми параметрами. – danh