Chcę zezwolić użytkownikowi na wybranie zdjęcia bez ograniczania rozmiaru, a następnie jego edycję.Obsługa dużych obrazów w iOS
Mój pomysł polega na utworzeniu miniatury dużego zdjęcia o tym samym rozmiarze co ekran do edycji, a następnie, po zakończeniu edycji, użyj dużego zdjęcia, aby wykonać tę samą edycję, która została wykonana na miniaturze.
Gdy używam UIGraphicsBeginImageContext
do utworzenia miniatury obrazu, spowoduje to problem z pamięcią.
Wiem, że trudno jest edytować cały duży obraz bezpośrednio ze względu na ograniczenia sprzętowe, więc chcę wiedzieć, czy jest sposób, w jaki mogę zmniejszyć rozmiar dużego obrazu do mniej niż 2048 * 2048 w przypadku problemów z pamięcią?
Znalazłem klasę BitmapFactory
, która ma opcję inSampleSize
, która może zmniejszyć zdjęcie w platformie Android. Jak to zrobić w systemie iOS?
Możesz użyć NSData * data = [NSData dataWithContentsOfFile: opcje ścieżki: NSDataReadingMappedAlways error: & error]; Aby uzyskać dostęp do danych obrazu bez wczytywania go do pamięci. – Sten
dzięki za podpowiedź Stena, próbowałem używać opcji NSDataReadingMappedAlways, ale nadal ulega awarii z obrazem 10000 * 10000, myślę, że nie ważne jak załadować obraz, użyć UIGraphicsBeginImageContext do skalowania obrazu początkowego potrzebuje całej bitmapy w pamięci. Czy jest jakiś sposób, aby zmniejszyć obraz po załadowaniu pliku jpeg/png do pamięci? – lingtianlan