gpt4 book ai didi

ios - 如何获取 UTType 图像、音频和视频的所有扩展

转载 作者:行者123 更新时间:2023-12-05 09:29:59 30 4
gpt4 key购买 nike

有没有办法得到Alldifferent UTType 扩展类型作为字符串?我需要它们专门用于图像、音频和视频。

我关注了this answer , 但它并没有给我所有的扩展

var types = [String]()

let utiTypes = [kUTTypeImage, kUTTypeMovie, kUTTypeVideo, kUTTypeMP3, kUTTypeAudio, kUTTypeQuickTimeMovie, kUTTypeMPEG, kUTTypeMPEG2Video, kUTTypeMPEG2TransportStream, kUTTypeMPEG4, kUTTypeMPEG4Audio, kUTTypeAppleProtectedMPEG4Audio, kUTTypeAppleProtectedMPEG4Video, kUTTypeAVIMovie, kUTTypeAudioInterchangeFileFormat, kUTTypeWaveformAudio, kUTTypeMIDIAudio, kUTTypeLivePhoto, kUTTypeTIFF, kUTTypeGIF, kUTTypeQuickTimeImage, kUTTypeAppleICNS]

for type in utiTypes {

let str = String(type)

guard let utiStr = fileExtension(for: str) else { continue }

types.appent(utiStr)
}

dump(types)

结果是

15 elements // there are really 21 types
- "jpeg"
- "png"
- "mov"
- "mpg"
- "m2v"
- "ts"
- "mp3"
- "mp4"
- "mp4"
- "avi"
- "aiff"
- "wav"
- "midi"
- "tiff"
- "gif"

这里的问题是它不返回像 qtjpg 这样的值。例如,我使用 UIDocumentPickerViewController,当我选择图像时,返回的 url pathExtension 是 jpg 而不是 jpeg。如果我想知道返回的 url 是否是图像,并且我将它的 pathExtension 与上面的 types 数组进行比较,它会说它没有出现在列表中。

最佳答案

你可以这样做:

import UniformTypeIdentifiers

let utiTypes = [UTType.image, .movie, .video, .mp3, .audio, .quickTimeMovie, .mpeg, .mpeg2Video, .mpeg2TransportStream, .mpeg4Movie, .mpeg4Audio, .appleProtectedMPEG4Audio, .appleProtectedMPEG4Video, .avi, .aiff, .wav, .midi, .livePhoto, .tiff, .gif, UTType("com.apple.quicktime-image"), .icns]

print(utiTypes.flatMap { $0?.tags[.filenameExtension] ?? [] })

当我在 playground 中运行此代码时,您列出的 UTType 总共有 33 个文件扩展名。请注意,您列出的某些 UTType 没有与之关联的文件扩展名,可能是因为它们太“通用”(例如“图像”和“视频”)。并且有的UTType有多个文件扩展名,有的可能与其他UTType的文件扩展名相同。

输出中没有“jpg”或“png”。要看到它们出现,您将必须使用此列表:

// I've also removed the types that have no file name extensions
let utiTypes = [
UTType.jpeg,
.png,
.mp3,
.quickTimeMovie,
.mpeg,
.mpeg2Video,
.mpeg2TransportStream,
.mpeg4Movie,
.mpeg4Audio,
.appleProtectedMPEG4Audio,
.avi,
.aiff,
.wav,
.midi,
.tiff,
.gif,
UTType("com.apple.quicktime-image"),
.icns
]

使用上面的列表,我的输出是:

jpeg
jpg
jpe
png
mp3
mpga
mov
qt
mpg
mpeg
mpe
m75
m15
m2v
ts
mp4
mpg4
mp4
mpg4
m4p
avi
vfw
aiff
aif
wav
wave
bwf
midi
mid
smf
kar
tiff
tif
gif
qtif
qti
icns

另请注意,如果您想从文件扩展名中获取 UTType,您可以这样做:

let type = UTType(tag: "jpg", tagClass: .filenameExtension, conformingTo: nil)

并检查文件扩展名是否为例如通过做图像的:

type?.isSubtype(of: .image)

请记住,该文件并不一定代表一张图片,因为它的名字表明它是 :)

关于ios - 如何获取 UTType 图像、音频和视频的所有扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70102279/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com