Усреднение нескольких UIImages - PullRequest
1 голос
/ 31 октября 2011

Я давно искал этот ответ.Но я не смог его найти.

Я бы хотел усреднить пиксели 30 изображений.Для этого я бы хотел использовать Quartz2D вместо того, чтобы просматривать все пиксели всех изображений.Мне пришло в голову, что для того, чтобы нарисовать 30 изображений вместе, мне просто нужно настроить альфа-канал каждого из них на 1/30.Затем, после рисования одного поверх другого, я получу желаемый эффект.

желаемая формула должна быть: Dest Px = (img [0] .px + .... img [29] .px)/ 30

Я пытался добиться этого, используя imageContext и смешивая изображения без удачи:

UIGraphicsBeginImageContext(CGSizeMake(sz.width, sz.height));

for (int i=0; i<30; i++) {

    UIImage* img = [self.delegate requestImage:self at:i];

    CGPoint coord = [self.delegate requestTranslation:self at:i];

    [img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30];

}

UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

Как я могу получить усредненное изображение многих UIimages?Я также попытался добавить изображение со многими подслоями, но я также получаю размытые изображения.

Спасибо!

1 Ответ

1 голос
/ 31 октября 2011

Попробуйте изменить следующее:

[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30];

на

[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1.0/30.0];

1/30 (используя целочисленные значения) == 0, поэтому вы будете рисовать изображения полностью прозрачными.Добавляя .0, вы уточняете, хотите ли вы CGFloat.

...