Nuke
ไลบรารี Swift แบบโอเพ่นซอร์สสำหรับการแก้ไขและประมวลผลภาพ
Swift API ฟรีที่อนุญาตให้ปรับแต่งไปป์ไลน์รูปภาพ ปรับขนาดรูปภาพ ใช้โปรเซสเซอร์แบบกำหนดเอง มุมของรูปภาพที่กลม ดาวน์โหลด และเงินสดรูปภาพ และอื่นๆ
Nuke เป็นกรอบ Open Source Swift ที่มีประโยชน์มากซึ่งช่วยให้ผู้พัฒนาซอฟต์แวร์สามารถโหลดและแสดงภาพภายในแอพพลิเคชั่น Swift ของตนเองได้อย่างง่ายดาย ต้องใช้รหัสเพียงบรรทัดเดียวในการดาวน์โหลดและแสดงภาพในแอปของคุณ ห้องสมุดยังรวมถึงการสนับสนุนสําหรับคุณสมบัติขั้นสูงหลายอย่างเช่นการนําเสนอภาพและการถอดรหัสแบบก้าวหน้าที่สามารถเพิ่มประสิทธิภาพของแอพและประสบการณ์ของผู้ใช้
Nuke API ใช้งานง่ายมากและมีสถาปัตยกรรมขั้นสูงที่ช่วยให้นักพัฒนาซอฟต์แวร์นึกถึงความเป็นไปได้ที่แทบไม่จำกัดสำหรับการประมวลผลภาพและการปรับแต่ง รวมการรองรับในตัวสำหรับรูปแบบภาพพื้นฐาน เช่น JPEG, PNG, HEIF และอื่นๆ อีกมากมาย นอกจากนี้ยังรองรับการเข้ารหัสและถอดรหัสภาพโดยใช้รหัส Swift
ไลบรารีมีคุณลักษณะมากมายและได้รวมคุณสมบัติที่สําคัญหลายประการสําหรับการจัดการภาพของพวกเขาโดยใช้คําสั่ง Swift เช่นภาพโหลดการปรับแต่งท่อภาพ Resression, การใช้ฟิลเตอร์เช่นภาพเบลอรัสเซีย, โดยใช้หน่วยประมวลผลแบบ HTRgress
เริ่มต้นกับ Nuke
วิธีที่แนะนำในการติดตั้ง Nuke คือการใช้ CocoaPods โปรดเพิ่มบรรทัดต่อไปนี้ใน Podfile . ของคุณ
ติดตั้ง Nuke ผ่าน CocoaPods
pod "Nuke"
pod "Nuke-Alamofire-Plugin" # optional
pod "Nuke-AnimatedImage-Plugin" # optional
โคลนแหล่งล่าสุดโดยใช้คำสั่งต่อไปนี้
ติดตั้ง Nuke ผ่าน GitHub
$ git https://github.com/kean/Nuke.git
ดาวน์โหลดและใช้รูปภาพโดยใช้ Swift
Nuke API แบบโอเพนซอร์สมอบวิธีการดาวน์โหลดและใช้งานรูปภาพภายในแอพ Swift ที่มีการจัดการที่ดีและมีประสิทธิภาพ ในการดึงรูปภาพ คุณต้องส่ง URL ของรูปภาพที่ต้องการ แล้วเรียกวิธีการดำเนินการต่อ มันจะดาวน์โหลดรูปภาพที่ร้องขอในพื้นหลังและจะแจ้งการปิดการตอบสนองเมื่อเสร็จสิ้น
ดูรูปภาพในรูปแบบต่างๆภายในแอป Swift
// Load images directly using Async/Await
func loadImage() async throws {
let response = try await pipeline.image(for: url, delegate: self)
}
// Use UI components provided by NukeUI mode
struct ContainerView: View {
var body: some View {
LazyImage(url: URL(string: "https://example.com/image.jpeg"))
}
}
ภาพประจําจังหวัดโดยใช้ Swift API
Prefetching เป็นคุณลักษณะที่มีประโยชน์มากที่ช่วยให้ผู้ใช้สามารถดาวน์โหลดภาพหรือข้อมูลอื่น ๆ ก่อนเวลาที่จะคาดว่าจะใช้งาน แอปสามารถดาวน์โหลดและเก็บไว้ในแคชเครือข่ายของแอปพลิเคชัน หลังจากนั้นเมื่อคุณต้องการดูภาพการตอบสนองต่อคําขอของคุณจะกลับมาจากแคชแทนเครือข่าย แหล่งที่มาเปิด API Nuke ได้รวมการสนับสนุนสําหรับคุณลักษณะที่น่าตื่นเต้นที่เรียกว่า Prefetching ภาพโดยใช้รหัส Swift โปรดจําไว้ว่า Prefetching สามารถใช้ข้อมูลของผู้ใช้และใส่ความดันพิเศษบน CPU และหน่วยความจํา เพื่อลดความดันนี้คุณสามารถเลือกเฉพาะแคชดิสก์เป็นปลายทางที่ดึงข้อมูลไว้ล่วงหน้า
จังหวัดและแคช GitHub โดยใช้ Swift API
inal class PrefetchingDemoViewController: UICollectionViewController {
private let prefetcher = ImagePrefetcher()
private var photos: [URL] = []
override func viewDidLoad() {
super.viewDidLoad()
collectionView?.isPrefetchingEnabled = true
collectionView?.prefetchDataSource = self
}
}
extension PrefetchingDemoViewController: UICollectionViewDataSourcePrefetching {
func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) {
let urls = indexPaths.map { photos[$0.row] }
prefetcher.startPrefetching(with: urls)
}
func collectionView(_ collectionView: UICollectionView, cancelPrefetchingForItemsAt indexPaths: [IndexPath]) {
let urls = indexPaths.map { photos[$0.row] }
prefetcher.stopPrefetching(with: urls)
}
}
โหลดรูปภาพและเงินสดผ่าน Swift
การแคชรูปภาพเป็นวิธีที่มีประโยชน์มากที่ช่วยปรับปรุงประสิทธิภาพของแอปพลิเคชันและประสบการณ์ของผู้ใช้ปลายทาง Nuke API แบบโอเพ่นซอร์สช่วยให้แอปซอฟต์แวร์แคชรูปภาพที่ดาวน์โหลดโดยอัตโนมัติ Nuke อาศัยเลเยอร์แคชในตัวสองชั้น อันแรกใช้สำหรับเก็บภาพที่ประมวลผลซึ่งพร้อมสำหรับการแสดงผล ใช้อัลกอริธึม LRU – รายการที่ใช้น้อยที่สุดจะถูกลบออกก่อนในระหว่างการกวาด อันที่ 2nd ใช้ HTTP Disk Cache เพื่อเก็บข้อมูลภาพที่ยังไม่ได้ประมวลผล นอกจากนี้ยังสามารถตรวจสอบการมีอยู่ของภาพที่ร้องขอในแคช
Read/Write รูปภาพในหน่วยความจําหรือแคชดิสก์ผ่าน Swift API
let cache = pipeline.cache
let request = ImageRequest(url: URL(string: "https://example.com/image.jpeg")!)
cache.cachedImage(for: request) // From any cache layer
cache.cachedImage(for: request, caches: [.memory]) // Only memory
cache.cachedImage(for: request, caches: [.disk]) // Only disk (decodes data)
let data = cache.cachedData(for: request)
cache.containsData(for: request) // Fast contains check
// Stores image in the memory cache and stores an encoded
// image in the disk cache
cache.storeCachedImage(ImageContainer(image: image), for: request)
cache.removeCachedImage(for: request)
cache.removeAll()