iOS: хранение миниатюр изображений в Core Data - PullRequest
1 голос
/ 13 октября 2011

Мне нужно взять некоторые изображения из библиотеки фотографий iPhone / iPad из моего приложения, сохранить их в сущности Core Data и отобразить их в виде небольших миниатюр (48x48 пикселей) в UITableViewCell и около 80x80 пикселей вподробно UIView.Я следовал примеру приложения Recipes, где они используют UIImageJPEGRepresentation(value, 0.1) для преобразования в NSData и хранения байтов внутри Core Data, и это не в конечном итоге занимает много места, и это хорошо.Но при извлечении данных с использованием UIImage *uiImage = [[UIImage alloc] initWithData:value]; и отображении их в виде миниатюр с помощью «Соотношение сторон» они выглядят ужасно и зернисто.Я попытался изменить переменную качества изображения в формате JPEG, но даже установка 0,9 не помогает.

Это нормально?Есть ли лучший способ сжать изображение, которое не вызывает так много зернистости?Поскольку я просто хочу показать небольшую миниатюру, а затем немного большую миниатюру, я считаю, что Core Data отлично подойдет для ее хранения, поскольку она должна (теоретически) также поддерживать iCloud.Но если это будет выглядеть ужасно, то мне придется пересмотреть.

Ответы [ 2 ]

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

Две вещи, вы изменяете размер изображения до нужного размера?Вы пробовали UIImagePNGRepresentation()?Это должно сжимать это без потери качества.

0 голосов
/ 30 апреля 2015

Если UIImagePNGRepresentation (без потерь) дает плохие изображения, то проблема в коде изменения размера вашего изображения. Базовые данные просто дают вам то, что вы вкладываете в то, что вы вкладываете, поэтому, если вы получаете плохие изображения, это потому, что вы вставляете плохие изображения.

Одна из сетчатки iPhone / iPad, а другая нет? Если это так, возможно, проблема в том, что вам не нужны изображения 48x48 пикселей, вам нужно разрешение 48x48 точек (что означает, что вам понадобится 2x изображения 96x96 для отображения качества сетчатки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...