Изображение, звук и ресурсы видео

OS X и платформы iOS были созданы для обеспечения богатого мультимедийного опыта. Для поддержки того опыта обе платформы предоставляют много поддержки загрузки и использования изображения, звука и ресурсов видео в приложении. Ресурсы изображения обычно используются для рисования частей пользовательского интерфейса приложения. Звуковые и ресурсы видео используются менее часто, но могут также улучшить основное появление и апелляцию приложения. Следующие разделы описывают поддержку, доступную для работы с изображением, звуком и ресурсами видео в Ваших приложениях.

Изображения и звуки в файлах пера

Используя XCode, можно сослаться звуковые файлы приложения и файлы образа из файлов пера. Вы могли бы сделать так для соединения тех изображений или звуков с различными свойствами представления или управления. Например, Вы могли бы установить изображение по умолчанию, чтобы вывести на экран в представлении изображения или установить изображение для отображения для кнопки. Когда файл пера загружается, создание такого соединения в файле пера спасает Вас трудность необходимости сделать то соединение позже.

Для предоставления доступа к изображению и звуковым ресурсам доступными в файле пера все, что необходимо сделать, добавляют их к проекту XCode; XCode тогда перечисляет их в области библиотеки. При создании соединения с данным файлом ресурсов XCode обращает внимание на то соединение в файле пера. Во время загрузки загружающий перо код ищет тот ресурс в пакете проекта, куда это должно было быть помещено XCode во время изготовления.

Когда Вы загружаете файл пера, содержащий ссылки на изображение и звуковые ресурсы, загружающие перо ресурсы кэшей кода, когда это возможно, для простого извлечения позже. Например, после загрузки файла пера, можно получить изображение, связанное с тем файлом пера с помощью imageNamed: метод также NSImage или UIImage (в зависимости от Вашей платформы). В OS X можно получить кэшируемые звуковые ресурсы с помощью soundNamed: метод NSSound.

Загрузка ресурсов изображения

Ресурсы изображения обычно используются в большинстве приложений. Даже очень простые приложения используют изображения для создания пользовательского взгляда для средств управления и представлений. OS X и iOS предоставляют обширную поддержку для управления данными изображения с помощью объектов Objective C. Эти объекты делают изображения изображения использования чрезвычайно простыми, часто требуемыми только несколько строк кода, чтобы загрузить и нарисовать изображение. Если Вы предпочитаете не использовать объекты Objective C, можно также использовать Кварц для загрузки изображений с помощью интерфейса на базе С. Следующие разделы описывают процесс для загрузки файлов ресурсов изображения с помощью каждого из доступных методов.

Загрузка изображений в Objective C

Для загрузки изображений в Objective C Вы используете любого NSImage или UIImage объект, в зависимости от текущей платформы. Приложения, созданные для OS X с помощью платформы AppKit, используют NSImage возразите, чтобы загрузить изображения и привлечь их. Приложения, созданные для iOS, используют UIImage объект. Функционально, оба из этих объектов обеспечивают почти идентичное поведение когда дело доходит до загрузки существующих ресурсов изображения. Вы инициализируете объект путем передачи его, указатель на файл образа в комплекте приложений и объекте изображения заботится о подробных данных загрузки данных изображения.

Перечисление 3-1 показывает, как загрузить ресурс изображения с помощью NSImage класс в OS X. После определения местоположения ресурса изображения который в этом случае находится в комплекте приложений, Вы просто используете тот путь для инициализации объекта изображения. После инициализации можно нарисовать изображение с помощью методов NSImage или передача, которые возражают против других методов, которые могут использовать ее. Для выполнения той же самой задачи в iOS все, что необходимо было бы сделать, изменить ссылки NSImage к UIImage.

Перечисление 3-1  , Загружающее ресурс изображения

NSString* imageName = [[NSBundle mainBundle] pathForResource:@"image1" ofType:@"png"];
NSImage* imageObj = [[NSImage alloc] initWithContentsOfFile:imageName];

Можно использовать объекты изображения для открытия любого типа изображения, поддерживаемого на целевой платформе. Каждый объект обычно является легкой оберткой для более усовершенствованного кода обработки изображения. Для рисования изображения в текущем графическом контексте Вы просто использовали бы один из связанных методов его получения. Оба NSImage и UIImage имейте методы для рисования изображения несколькими различными способами. NSImage класс также предоставляет дополнительную поддержку для управления изображениями, которые Вы загружаете.

Для получения информации о методах NSImage и UIImage классы, см. Ссылку класса NSImage и Ссылку класса UIImage. Для более подробной информации о дополнительных функциях NSImage класс, посмотрите Изображения в Руководстве по Рисованию Какао.

Загрузка изображений Используя кварц

Если Вы пишете код на базе С, можно использовать комбинацию Базовых вызовов Основы и Кварца для загрузки ресурсов изображения в приложения. Базовая Основа предоставляет начальную поддержку для определения местоположения ресурсов изображения и загрузки соответствующих данных изображения в память. Кварц берет данные изображения, которые Вы загружаете в память, и превращает его в применимое CGImageRef то, что Ваш код может тогда использовать для рисования изображения.

Существует два способа загрузить изображения с помощью Кварца: провайдеры данных и объекты источника изображения. Провайдеры данных доступны и в iOS и в OS X. Объекты источника изображения доступны только в OS X v10.4 и позже но используют в своих интересах Изображение платформа I/O для улучшения основных возможностей обработки изображения провайдеров данных. Когда дело доходит до загрузки и отображения ресурсов изображения, обе технологии хорошо подходят для задания. Единственное время Вы могли бы предпочесть источники изображения по провайдерам данных, - когда Вы хотите больший доступ к связанным с изображением данным.

Перечисление 3-2 показывает, как использовать провайдера данных для загрузки изображения JPEG. Этот метод использует Базовую поддержку пакета Основы, чтобы определить местоположение изображения в основном пакете приложения и получить URL к нему. Это тогда использует тот URL, чтобы создать объект поставщика данных и затем создать a CGImageRef для соответствующих данных JPEG. (Для краткости этот пример опускает любой код обработки ошибок. Ваш собственный код должен удостовериться, что любые структуры справочных данных допустимы.)

Перечисление 3-2  Используя провайдеров данных для загрузки ресурсов изображения

CGImageRef MyCreateJPEGImageRef (const char *imageName);
{
    CGImageRef image;
    CGDataProviderRef provider;
    CFStringRef name;
    CFURLRef url;
    CFBundleRef mainBundle = CFBundleGetMainBundle();
 
    // Get the URL to the bundle resource.
    name = CFStringCreateWithCString (NULL, imageName, kCFStringEncodingUTF8);
    url = CFBundleCopyResourceURL(mainBundle, name, CFSTR("jpg"), NULL);
    CFRelease(name);
 
    // Create the data provider object
    provider = CGDataProviderCreateWithURL (url);
    CFRelease (url);
 
    // Create the image object from that provider.
    image = CGImageCreateWithJPEGDataProvider (provider, NULL, true,
                                    kCGRenderingIntentDefault);
    CGDataProviderRelease (provider);
 
    return (image);
}

Для получения дальнейшей информации о работе с Кварцевыми изображениями, посмотрите Кварц 2D Руководство по программированию. Для справочной информации о провайдерах данных посмотрите Кварц 2D Ссылочный Набор (OS X) или Базовая Графическая Ссылка Платформы (iOS).

Указание Изображений С высокой разрешающей способностью в iOS

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

Для указания версии с высокой разрешающей способностью изображения создайте версию, ширина которой и высота (измеренный в пикселях) дважды больше чем это оригинала. Вы используете дополнительные пиксели в изображении для обеспечения дополнительной подробности. При сохранении образа используйте то же базовое имя, но включайте строку @2x между основным именем файла и расширением файла. Например, если Вам назвали изображение MyImage.png, имя версии с высокой разрешающей способностью было бы MyImage@2x.png. Поместите и исходные версии с высокой разрешающей способностью своего изображения в том же расположении в Вашем комплекте приложений.

Пакет - и загружающие изображение подпрограммы автоматически ищет файлы образа с @2x представьте в виде строки, когда базовое устройство будет иметь экран с высокой разрешающей способностью. Если Вы объединяетесь @2x строка с другими модификаторами, @2x строка должна прибыть перед любыми модификаторами устройства, но после всех других модификаторов, таких как ориентация запуска или модификаторы схемы URL. Например:

  • MyImage.png - Версия по умолчанию ресурса изображения.

  • MyImage@2x.png - Версия с высокой разрешающей способностью ресурса изображения для устройств с дисплеями Сетчатки.

  • MyImage~iphone.png - Версия изображения для iPhone и iPod touch.

  • MyImage@2x~iphone.png - Версия с высокой разрешающей способностью изображения для iPhone и устройств iPod touch с дисплеями Сетчатки.

Когда Вы захотите загрузить изображение, не включайте @2x или любые модификаторы устройства при указании названия картинки в коде. Например, если бы Ваш комплект приложений включал файлы образа из предыдущего списка, то Вы попросили бы названное изображение MyImage.png. Система автоматически определяет, какая версия изображения является самой надлежащей и загружает ее. Точно так же при использовании или получение, которые отображают, Вы не должны знать, является ли это исходным разрешением или версией с высокой разрешающей способностью. Рисующие изображение подпрограммы автоматически корректируются на основе загруженного изображения. Однако, если Вы все еще хотите знать, является ли изображение исходной или версией с высокой разрешающей способностью, можно проверить ее масштабный коэффициент. Если изображение является версией с высокой разрешающей способностью, ее масштабный коэффициент установлен в значение кроме 1.0.

Для получения дополнительной информации о том, как поддерживать устройства с высокой разрешающей способностью, посмотрите Поддерживающие Экраны С высокой разрешающей способностью В Представлениях.