Просмотр миниатюр изображений - PullRequest
4 голосов
/ 01 августа 2009

Я хочу показать некоторые изображения в виде эскиза в контроллере вида, но я не знаю, как это сделать. Может кто-нибудь, пожалуйста, дайте мне несколько идей или пример кода, если это возможно.

Ответы [ 2 ]

36 голосов
/ 01 августа 2009

Вы спрашиваете, как создавать миниатюры из больших изображений или о том, как создать контроллер представления, который отображает их красиво?

Построение контроллера представления:

Вы можете использовать TTPhotoViewController из проекта Three20 ( описание ), который действует аналогично встроенному в iPhone ролику камеры для просмотра изображений.

Вы можете посмотреть пример кода Scrolling от apple, упомянутый в на этот вопрос об использовании его для миниатюр .

Если вы хотите создать его самостоятельно, вы можете рассмотреть возможность использования GridView из библиотеки Мориарти , либо в виде большой сетки в UIScrollView, либо в виде более эффективный ряд за строкой в ​​UITableView. В UIScrollView.

есть предыдущий вопрос о оптимизированной загрузке изображений.

Создание миниатюр из больших изображений:

Самый простой способ уменьшить изображение - просто отобразить его в UIImageView с рамкой меньшего размера, который вам нужен - он масштабируется для вас.

Если вы хотите сохранить миниатюру или заботиться об использовании памяти, вы можете создать версию в жестком масштабе. Пример кода ниже взят из

этого сообщения в блоге и может быть добавлен к UIImage в качестве метода категории:
- (UIImage*) imageScaledToSize: (CGSize) newSize {
  UIGraphicsBeginImageContext(newSize);
  [self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
  UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

  return newImage;
}

Наконец, вот предыдущий вопрос о маскировании закругленных углов на изображении , аналогично значкам приложений, используемым на домашнем экране.

Добавлена ​​

Использование встроенного эскиза изображения:

Есть замечательная функция CGImageSourceCreateThumbnailAtIndex, которая понимает встроенные миниатюры в определенных форматах данных изображений. Вы можете увидеть некоторые полезные примеры кода для этого в Создание миниатюрного изображения из источника изображения в Руководстве по программированию ввода / вывода изображения от Apple.

0 голосов
/ 01 августа 2009

Есть несколько проблем с миниатюрами; возможно, вы могли бы уточнить, какие из них вас больше всего волнуют?

  1. Как отобразить уменьшенную версию существующего изображения

  2. Как ускорить разбиение на страницы путем кэширования миниатюр (вместо простого динамического сжатия оригиналов)

  3. Как разрешить пользователю перелистывать миниатюры

  4. Как синхронизировать миниатюры с оригиналами, если ваши изображения доступны для редактирования или пользователь может добавить к ним

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