A Swift package for retrieving images from Sony digital cameras.
SwiftPM
To install OpenAlpha using Swift Package Manager, add the following dependency to your Package.swift file:
.Package(url: "https://github.com/colealanroberts/OpenAlpha/OpenAlpha.git", majorVersion: 1)Alternatively, you can add OpenAlpha to your project by clicking the "+" button in Xcode's "Swift Packages" menu.
Required Entitlements
The following entitlements must be added to your Xcode target—
Connecting to a Camera
import OpenAlpha
let oa = OpenAlpha()
let hotspot = OpenAlpha.Hotspot(ssid: "DIRECT-SSID:ILCE-7M2", passphrase: "1234abcd")
do {
let ip = try await oa.connect(to: hotspot)
// Specific sizes can be requested using: `[.thumbnail, .small, .large, .original]`.
// Additionally, a static helper method `.all()` has been included,
// though one should note the potential battery cost.
let media = try await oa.media(sizes: .all(), from: ip)
print(media) // [Media]
} catch {
fatalError(error.localizedDescription)
}? Note: Specifying
.all()may incur an additional cost if aAsset.originalresource is available for retrieval. Generally speaking, this data represents the original high-resolution photo, and may be much larger in both resolution and file size than even.large. This asset may take longer to retrieve, resulting in additional drain of the camera's battery.
You can also create a Hotspot object by passing a String value, which is useful if you have retrieved a hotspot configuration from a QR code. For information on how to scan and process QR codes, see this tutorial.
Internally, this initializer makes use of Scanner and attempts to construct a valid Hotspot object from the String value.
Media objects contain three Asset properties: small, large, thumbnail, and optionally original if supported by the camera. Each Asset object has a single data property, which is a NSData/Data object representing a JPEG image. You can use this data to create a UIImage/NSImage or similar object:
let image = UIImage(data: media[0].large.data)
imageView.image = imageContributions to OpenAlpha are welcomed!
If you would like to report a bug, discuss the current state of the code, submit a fix, or propose a new feature, please use GitHub's Issues and Pull Request features.
The following camera models have been confirmed to be compatible with OpenAlpha:
Note This is not a complete list, please open a PR with the compatible camera model once confirmed. See the Confirming Compatibility Wiki entry.
OpenAlpha is licensed under the MIT License. See LICENSE for more information.
Cole Roberts