Generate video thumbnails
This commit is contained in:
@ -136,15 +136,14 @@ final class FileResource: Item, LocalizedItem {
|
||||
}
|
||||
}
|
||||
|
||||
var imageToDisplay: Image {
|
||||
guard let imageData = content.storage.fileData(for: id) else {
|
||||
print("Failed to load data for image \(id)")
|
||||
return failureImage
|
||||
var imageToDisplay: Image? {
|
||||
guard let displayImageData else {
|
||||
return nil
|
||||
}
|
||||
update(fileSize: imageData.count)
|
||||
guard let loadedImage = NSImage(data: imageData) else {
|
||||
update(fileSize: displayImageData.count)
|
||||
guard let loadedImage = NSImage(data: displayImageData) else {
|
||||
print("Failed to create image \(id)")
|
||||
return failureImage
|
||||
return nil
|
||||
}
|
||||
update(imageDimensions: loadedImage.size)
|
||||
|
||||
@ -167,14 +166,25 @@ final class FileResource: Item, LocalizedItem {
|
||||
return size
|
||||
}
|
||||
|
||||
private var displayImageData: Foundation.Data? {
|
||||
if type.isImage {
|
||||
guard let data = content.storage.fileData(for: id) else {
|
||||
print("Failed to load data for image \(id)")
|
||||
return nil
|
||||
}
|
||||
return data
|
||||
}
|
||||
if type.isVideo {
|
||||
return content.storage.getVideoThumbnail(for: id)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
private func getCurrentImageDimensions() -> CGSize? {
|
||||
guard type.isImage else {
|
||||
guard let displayImageData else {
|
||||
return nil
|
||||
}
|
||||
guard let imageData = content.storage.fileData(for: id) else {
|
||||
return nil
|
||||
}
|
||||
guard let loadedImage = NSImage(data: imageData) else {
|
||||
guard let loadedImage = NSImage(data: displayImageData) else {
|
||||
return nil
|
||||
}
|
||||
return loadedImage.size
|
||||
@ -214,10 +224,6 @@ final class FileResource: Item, LocalizedItem {
|
||||
self.generatedImageVersions = []
|
||||
}
|
||||
|
||||
private var failureImage: Image {
|
||||
Image(systemSymbol: .exclamationmarkTriangle)
|
||||
}
|
||||
|
||||
/// The path to the output folder where image versions are stored (no leading slash)
|
||||
var outputImageFolder: String {
|
||||
"\(content.settings.paths.imagesOutputFolderPath)/\(id.fileNameWithoutExtension)"
|
||||
@ -260,6 +266,18 @@ final class FileResource: Item, LocalizedItem {
|
||||
return content.settings.general.url + version.outputPath
|
||||
}
|
||||
|
||||
// MARK: Video thumbnail
|
||||
|
||||
func createVideoThumbnail() {
|
||||
guard type.isVideo else { return }
|
||||
guard !content.storage.hasVideoThumbnail(for: id) else { return }
|
||||
Task {
|
||||
if await content.imageGenerator.createVideoThumbnail(for: id) {
|
||||
didChange()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Paths
|
||||
|
||||
func removeFileFromOutputFolder() {
|
||||
|
Reference in New Issue
Block a user