swift - 判断图片类型
import Foundation import UIKit extension Data { enum ImageType { case unknown case jpeg case jpeg2000 case tiff case bmp case ico case icns case gif case png case webp } func detectImageType() -> Data.ImageType { if self.count < 16 { return .unknown } var value = [UInt8](repeating:0, count:1) self.copyBytes(to: &value, count: 1) switch value[0] { case 0x4D, 0x49: return .tiff case 0x00: return .ico case 0x69: return .icns case 0x47: return .gif case 0x89: return .png case 0xFF: return .jpeg case 0x42: return .bmp case 0x52: let subData = self.subdata(in: Range(NSMakeRange(0, 12))!) if let infoString = String(data: subData, encoding: .ascii) { if infoString.hasPrefix("RIFF") && infoString.hasSuffix("WEBP") { return .webp } } break default: break } return .unknown } static func detectImageType(with data: Data) -> Data.ImageType { return data.detectImageType() } static func detectImageType(with url: URL) -> Data.ImageType { if let data = try? Data(contentsOf: url) { return data.detectImageType() } else { return .unknown } } static func detectImageType(with filePath: String) -> Data.ImageType { let pathUrl = URL(fileURLWithPath: filePath) if let data = try? Data(contentsOf: pathUrl) { return data.detectImageType() } else { return .unknown } } static func detectImageType(with imageName: String, bundle: Bundle = Bundle.main) -> Data.ImageType? { guard let path = bundle.path(forResource: imageName, ofType: "") else { return nil } let pathUrl = URL(fileURLWithPath: path) if let data = try? Data(contentsOf: pathUrl) { return data.detectImageType() } else { return nil } } }
签 名:被别人嫉妒,说明你卓越;你嫉妒别人,说明你无能。
座右铭:抓紧一切时间睡觉。
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)