Jak bym kiedykolwiek używał grafiki Core tylko do generowania tła tekstury szumu? Utknąłem na części szumu, ponieważ nie ma możliwości dodania filtru szumowego do grafiki głównej ...Gaussian Noise tylko przy użyciu Core Graphics?
Odpowiedz
Około rok później, znalazłem odpowiedź:
CGImageRef CGGenerateNoiseImage(CGSize size, CGFloat factor) CF_RETURNS_RETAINED {
NSUInteger bits = fabs(size.width) * fabs(size.height);
char *rgba = (char *)malloc(bits);
srand(124);
for(int i = 0; i < bits; ++i)
rgba[i] = (rand() % 256) * factor;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef bitmapContext = CGBitmapContextCreate(rgba, fabs(size.width), fabs(size.height),
8, fabs(size.width), colorSpace, kCGImageAlphaNone);
CGImageRef image = CGBitmapContextCreateImage(bitmapContext);
CFRelease(bitmapContext);
CGColorSpaceRelease(colorSpace);
free(rgba);
return image;
}
To skutecznie generuje obraz hałasu, który jest gwarancją losowy i może być sporządzony za pomocą kodu z odpowiedzi Jason Harwig za .
Utwórz szum png, a następnie narysuj go za pomocą nakładki.
// draw background
CGContextFillRect(context, ...)
// blend noise on top
CGContextSetBlendMode(context, kCGBlendModeOverlay);
CGImageRef cgImage = [UIImage imageNamed:@"noise"].CGImage;
CGContextDrawImage(context, rect, cgImage);
CGContextSetBlendMode(context, kCGBlendModeNormal);
Z czystej grafiki rdzenia chciałem również narysować szum w Core Graphics ... Wymagania mojej aplikacji to, że nie używa plików png, niestety. –
To dziwne wymaganie. Jako przyczynę rozumiałem niezależność rozdzielczości, ale wystarczy rozwiązać dwa różne png rozdzielczości. –
Mimo to, to by działało ... Czy istnieje sposób, aby mocno zakodować UIImage jako dane tekstowe, które mogłem przywrócić z niestandardowej klasy? EDYTOWANIE: Czy nie byłbym w stanie utworzyć niestandardowej klasy opakowania z kodowaniem w formacie base64 obrazu w formacie Retina i napisać kilka prostych metod, aby zwrócić obraz w dowolnym rozmiarze/formacie? –
Istnieje CIRandomGenerator w CoreImageFilters od iOS 6. Należy jednak pamiętać, że nie jest to hałas gaussowski (jak nie jest w poprzedniej odpowiedzi).
- (UIImage*)linearRandomImage:(CGRect)rect
{
CIContext *randomContext = [CIContext contextWithOptions:nil];
CIFilter *randomGenerator = [CIFilter filterWithName: @"CIColorMonochrome"];
[randomGenerator setValue:[[CIFilter filterWithName:@"CIRandomGenerator"] valueForKey:@"outputImage"] forKey:@"inputImage"];
[randomGenerator setDefaults];
CIImage *resultImage = [randomGenerator outputImage];
CGImageRef ref = [randomContext createCGImage:resultImage fromRect:rect];
UIImage *endImage=[UIImage imageWithCGImage:ref];
return endImage;
}
- 1. Core Image vs Core Graphics
- 2. Zalety korzystania z Core Graphics
- 3. Jak narysować punkt za pomocą Core Graphics?
- 4. Jak narysować coś takiego w Core Graphics
- 5. Które części UIKit, Core Graphics, Core Animation, OpenGL są dozwolone na innych niż główny wątek?
- 6. Czy ten wątek kodu Core Graphics jest bezpieczny?
- 7. aws lambda przy użyciu .net core 2.0
- 8. Jak narysować zaokrąglony prostokąt w Core Graphics/Quartz 2D?
- 9. Swift Gaussian Blur an image
- 10. Jak usunąć postgresql noise
- 11. Perlin Noise dla 1D?
- 12. Implementacja Gaussian Naive Bayes
- 13. Serializuj tylko proste typy przy użyciu Json.Net
- 14. dostać tylko cyfry przy użyciu wyrażenia regularnego
- 15. Zamień div zamówienie przy użyciu tylko css
- 16. EXC_BAD_ACCESS przy użyciu ARC tylko podczas testów
- 17. Instalacja Bower przy użyciu tylko https?
- 18. wykreślenie tylko raz przy użyciu ggplot2
- 19. AngularJS - Symulacja .prev() tylko przy użyciu jqLite?
- 20. referencyjny wymagane tylko błąd przy użyciu LINQ
- 21. Przycisk zamknięcia X tylko przy użyciu css
- 22. Zabezpieczanie danych przy użyciu danych Core w iOS
- 23. GROUP BY z SUM() przy użyciu Core Data
- 24. Uzyskiwanie EXC_BAD_ACCESS przy użyciu dispatch_async z Core Data
- 25. Aplikacja do samodzielnego hostowania przy użyciu Hostable Web Core
- 26. Entity Framework Core 1.0 pierwsze migracje przy użyciu kodu?
- 27. Gaussian Wygładzanie obrazu w pytonie
- 28. PHP/GD Gaussian Blur Effect
- 29. Jak zachować przejrzystość obrazu przy użyciu colorWithPatternImage:
- 30. Próbuję uruchomić bibliotekę Gloss Graphics
Należy pamiętać, że obraz zwracany z tej funkcji ma liczbę zatrzymań +1 i musi zostać zwolniony za pomocą CFRelease (obrazu) po zakończeniu rysowania. W przeciwnym razie przecieka. Również nazwa funkcji powinna zostać zmieniona, aby to odzwierciedlić. Powinien zawierać "nowy" lub "stworzyć" gdzieś. – Bryan
Dzięki! Naprawiono przy pomocy 'CF_RETURNS_RETAINED'. –