Как получить цвет пикселя в UIView?

Попытайтесь выбрать от user_tables, который перечисляет таблицы, принадлежавшие текущему пользователю.

33
задан balpha 21 July 2009 в 16:24
поделиться

2 ответа

Это ужасно и медленно. В основном вы создаете контекст растрового изображения с резервным хранилищем, которое вы выделяете, чтобы вы могли читать память, затем вы визуализируете слой представлений в контексте и считываете соответствующую точку в оперативной памяти.

Если вы уже знаете, как это сделать для изображения вы можете сделать что-то вроде этого:

- (UIImage *)imageForView:(UIView *)view {
  UIGraphicsBeginImageContext(view.frame.size);
  [view.layer renderInContext: UIGraphicsGetCurrentContext()];
  UIImage *retval = UIGraphicsGetImageFromCurrentImageContext(void);
  UIGraphicsEndImageContext();

  return retval;
}

И тогда вы получите изображение, из которого вы можете получить данные о пикселях. Я уверен, что имеющийся у вас механизм работы с изображениями в любом случае включает их рендеринг в контексте, так что вы можете объединить это с этим и исключить фактическое создание изображения. Так что, если вы возьмете это, удалите бит, в котором вы загружаете изображение, и замените его контекстным рендером:

[view.layer renderInContext: UIGraphicsGetCurrentContext()];

, все должно быть хорошо.

8
ответ дан 27 November 2019 в 17:31
поделиться

Исправлены некоторые незначительные ошибки

- (UIImage *)imageForView:(UIView *)view {
    UIGraphicsBeginImageContext(view.frame.size);
    [view.layer renderInContext: UIGraphicsGetCurrentContext()];
    UIImage *retval = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return retval;
}

Также добавьте

#import <QuartzCore/QuartzCore.h>  

в свой файл, чтобы избежать предупреждающих сообщений.

Объединение вашего кода с кодом, найденным здесь , работает безупречно .

2
ответ дан 27 November 2019 в 17:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: