Chcę ukryć obraz, przekazując inny obraz jako maskę. Mogę maskować obraz, ale wynikowy obraz nie wygląda dobrze. Jest postrzępiony na granicach.IOS: Maskowanie obrazu z zachowaniem współczynnika skali siatkówki na koncie
Zgaduję, że problem jest związany z grafiką siatkówki. Właściwość scale dla tych dwóch obrazów jest różna, ponieważ:
- Obraz, który chcę maskować, ma wartość skali 1. Ten obraz ma zazwyczaj rozdzielczość większą niż 1000x1000 pikseli.
- Obraz, zgodnie z którym chcę, aby wynikowy obraz (obrazek zawierający wyłącznie czarno-białe kolory) miał wartość skali 2. Ten obraz ma zwykle rozdzielczość 300 x 300 pikseli.
Uzyskany obraz ma wartość skalę 1.
Kod używam jest:
+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
CGImageRelease(mask);
UIImage *maskedImage = [UIImage imageWithCGImage:masked ];
CGImageRelease(masked);
return maskedImage;
}
Jak mogę uzyskać zamaskowany obraz, który podąża siatkówki skalę?
Należy rozważyć sprawdzić poprawność odpowiedzi, jeśli ci pomogła. – kokluch
Zadałem to pytanie 3 lipca 2013 r., A pierwsza odpowiedź miała miejsce w dniu 8 stycznia. Pomiędzy tymi godzinami przeniosłem się do różnych projektów i nie sprawdziłem, czy odpowiedź pomogła, a jeśli nie jestem pewna, to w jaki sposób mogę zaakceptować jakakolwiek odpowiedź. Chcę tylko zamknąć pytanie, ale nie wiem, jak to zrobić. –
Trudno znaleźć ... – kokluch