Mam duży obraz, który jest zbyt duży, aby można go było załadować do pamięci, ale interesuje mnie tylko pod zestaw pikseli w tym dużym obrazie. Czy można dekodować w pamięci tylko ten podzbiór pikseli? Wiem, że w Androidzie istnieje klasa w API, aby zrobić dokładnie to nazywa BitmapRegionDecoder to coś takiegoios Odkodować część obrazu
znalazłem CGDataProviderCreateSequential ale wymaga surowych pikseli w konstruktorze ...
Teraz robię coś takiego:
UIImage* srcImage = ...;
CFDataRef cgImgDataRef = CGDataProviderCopyData(CGImageGetDataProvider(srcImage.CGImage));//After this call, all pixels are decoded into memory and the app crashes
char* imageData = (char*)CFDataGetBytePtr(cgImgDataRef);
Obecna mądrość mówi, że sposobem na to jest podzielenie obrazu na płytki i leniwe załadowanie tylko płytek aktualnie wyświetlanych na odpowiednim poziomie powiększenia. Dokładnie jak duży jest ten obraz (w wymiarach w pikselach)? – warrenm
około 4096 x 3072, ale chodzi o to, że chcę załadować kafelek dużego obrazu bezpośrednio do mojej otwartej aplikacji ES. Więc muszę wyodrębnić potrzebne piksele i zadzwonić do glTexImage2D (...) z subpikselowymi danymi – AkademiksQc
Czy rozmiar wyodrębnionego obrazu dolnego jest zawsze taki sam, czy zmienia się? Jaki jest zasięg? – warrenm