2015-09-10 32 views

Trả lời

16

Đây là số link. Nếu không, đây là văn bản:

Sống Ảnh

Sống Photos là một tính năng mới của iOS 9 cho phép người dùng nắm bắt và sống lại những khoảnh khắc yêu thích của họ với bối cảnh phong phú hơn so với truyền thống ảnh. Khi người dùng nhấn nút chụp, ứng dụng Máy ảnh sẽ chụp nhiều nội dung hơn cùng với ảnh thông thường, bao gồm âm thanh và các khung hình bổ sung trước và sau ảnh. Khi duyệt qua thông qua các ảnh này, người dùng có thể tương tác với họ và phát lại tất cả nội dung đã chụp, làm cho ảnh trở nên sống động.

iOS 9.1 giới thiệu API cho phép ứng dụng kết hợp phát lại Ảnh trực tiếp cũng như xuất dữ liệu để chia sẻ. Có hỗ trợ mới trong khung Ảnh để tìm nạp đối tượng PHLivePhoto từ đối tượng PHImageManager, được sử dụng để đại diện cho tất cả dữ liệu mà bao gồm Ảnh trực tiếp. Bạn có thể sử dụng đối tượng PHLivePhotoView (được định nghĩa trong khung công tác PhotosUI) để hiển thị nội dung của một ảnh trực tiếp. Chế độ xem PHLivePhotoView sẽ chăm sóc hiển thị hình ảnh, xử lý tất cả tương tác của người dùng và áp dụng các phương pháp điều trị trực quan để phát lại nội dung .

Bạn cũng có thể sử dụng PHAssetResource để truy cập dữ liệu của đối tượng PHLivePhoto cho mục đích chia sẻ. Bạn có thể yêu cầu đối tượng PHLivePhoto cho nội dung trong thư viện ảnh của người dùng bằng cách sử dụng PHImageManager hoặc UIImagePickerController. Nếu bạn có tiện ích mở rộng chia sẻ, bạn cũng có thể nhận đối tượng PHLivePhoto bằng cách sử dụng NSItemProvider. Ở bên nhận của một lượt chia sẻ, bạn có thể tạo lại đối tượng PHLivePhoto từ tập hợp các tệp ban đầu được xuất bởi người gửi.

Hướng dẫn Hiển thị trực tiếp hình ảnh

Điều quan trọng là phải nhớ rằng một Live Photo vẫn là một bức ảnh. Nếu bạn phải hiển thị Ảnh trực tiếp trong môi trường không hỗ trợ PHLivePhotoView, bạn nên hiển thị ảnh đó là mà bạn hiển thị ảnh dưới dạng ảnh thông thường.

Không hiển thị riêng khung hình và âm thanh của Ảnh trực tiếp. Điều quan trọng là nội dung của Live Photo được trình bày theo cách phù hợp sử dụng cùng một cách xử lý và tương tác trực quan mô hình trong tất cả các ứng dụng.

Đó là khuyến cáo rằng bạn xác định một bức tranh như một hình ảnh trực tiếp bằng cách đặt huy hiệu được cung cấp bởi các PHLivePhotoView phương pháp lớp livePhotoBadgeImageWithOptions: PHLivePhotoBadgeOptionsOverContent trong góc trên cùng bên trái của bức ảnh.

Lưu ý rằng không có hỗ trợ để cung cấp hiệu ứng hình ảnh mà trải nghiệm người dùng khi họ vuốt qua ảnh trong ứng dụng Ảnh.

Hướng dẫn chia sẻ trực tiếp hình ảnh

Các dữ liệu của một Live Photo được xuất ra dưới dạng một tập hợp các tập tin trong một đối tượng PHAssetResource. Tập hợp các tệp phải được giữ nguyên dưới dạng đơn vị khi bạn tải chúng lên máy chủ. Khi bạn xây dựng lại PHLivePhoto với các tệp này ở phía người nhận, các tệp được xác thực; tải không thành công nếu các tệp không đến từ cùng một nội dung.

Nếu ứng dụng của bạn cho phép người dùng áp dụng hiệu ứng hoặc điều chỉnh cho ảnh trước khi chia sẻ, hãy đảm bảo áp dụng các điều chỉnh tương tự cho tất cả các khung của Ảnh trực tiếp. Ngoài ra, nếu bạn không hỗ trợ điều chỉnh toàn bộ nội dung của một ảnh trực tiếp, hãy chia sẻ nó dưới dạng ảnh thông thường và hiển thị một dấu hiệu thích hợp cho người dùng.

Nếu ứng dụng của bạn có giao diện người dùng để chọn hình ảnh để chia sẻ, bạn nên cho phép người dùng phát lại toàn bộ nội dung để họ biết chính xác những gì họ đang có sharing.When chọn ảnh để chia sẻ trong ứng dụng của bạn, người dùng cũng nên thể để tắt Live Photo, vì vậy, họ có thể đăng ảnh dưới dạng ảnh truyền thống .

3

Bên ngoài tài liệu, Hình ảnh trực tiếp bao gồm 2 tài nguyên, hình ảnh và mov (tệp phim nhanh). Vì vậy, mọi ảnh Live đều có 2 tệp 'thực tế' được kết nối bằng trình bao bọc của loại ảnh trực tiếp.

1

Ảnh trực tiếp thực sự là hai tệp. Hình ảnh JPEG gốc và video Full HD.

37

Ảnh trực tiếp có hai tài nguyên. Chúng được gắn với nhau với một mã định danh tài sản (một UUID như một chuỗi).

  1. JPEG; điều này phải có mục nhập siêu dữ liệu cho kCGImagePropertyMakerAppleDictionary với [17 : assetIdentifier] (17 là khóa Mã định danh tài sản ghi chú của Apple Maker).
  2. Mã thời gian MOV nhanh được mã hóa bằng H.264 ở tốc độ khung hình phù hợp (12-15fps) và kích thước (1080p). MOV này phải có:
    • Mục nhập siêu dữ liệu cấp cao nhất cho ["com.apple.quicktime.content.identifier" : assetIdentifier]. Nếu sử dụng AVAsset bạn có thể nhận được điều này từ asset.metadataForFormat(AVMetadataFormatQuickTimeMetadata)
    • Theo dõi siêu dữ liệu theo thời gian với ["com.apple.quicktime.still-image-time" : 0xFF]; Thời gian hình ảnh tĩnh thực tế khớp với dấu thời gian trình bày cho mục siêu dữ liệu này. Tải trọng có vẻ chỉ là một byte đơn 0xFF (aka -1) và có thể bỏ qua. Nếu sử dụng AVAssetReader, bạn có thể sử dụng CMSampleBufferGetOutputPresentationTimeStamp để nhận thời gian này.

Các assetIdentifier là những gì gắn hai mục với nhau và theo dõi siêu dữ liệu theo thời gian là những gì nói với hệ thống nơi mà hình ảnh vẫn ngồi trong timeline phim.

+0

An thực hiện bằng văn bản tập tin như vậy có thể được tìm thấy ở đây: https: // github.com/genadyo/LivePhotoDemo – jtbandes

+0

Đây có phải là trường hợp trên iOS 11 khi tạo tệp HEIC hay là phần phim được bao bọc trong cùng tệp .heic như phần ảnh? – jl6

1

Uniform Loại Identifier (UTI) cho định dạng là kUTTypeLivePhoto/com.apple.live-photo

@available(OSX 10.12, *) 
public let kUTTypeLivePhoto: CFString 

/* 
* 
* kUTTypeLivePhoto 
* 
* Live Photo 
* 
* UTI: com.apple.live-photo 
* 
* 
*/ 
+0

'kUTTypeLivePhoto' phù hợp với điều gì? 'UTTypeCopyDeclaration (kUTTypeLivePhoto)' nói nó phù hợp với không ai. Có vẻ hơi lạ. –

Các vấn đề liên quan