![](https://products-qa.fileformat.com/th/image/swift/kingfisher/header-image.png)
Kingfisher
ฟรี Swift Library เพื่อดาวน์โหลดและแคชรูปภาพ
Swift API แบบโอเพ่นซอร์สที่ช่วยให้นักพัฒนาซอฟต์แวร์ทำงานกับอิมเมจระยะไกลภายในเว็บแอปได้ อนุญาตให้ดาวน์โหลดและแคชรูปภาพ ใช้ตัวประมวลผลรูปภาพและตัวกรอง
Kingfisher คือการดําเนินการ Swift บริสุทธิ์น้ําหนักเบาที่ให้ฟังก์ชั่นที่สมบูรณ์สําหรับการทํางานกับรูปแบบไฟล์ภาพหลายโดยใช้รหัส Swift ห้องสมุดช่วยให้นักพัฒนาในการสร้างโปรแกรมที่สามารถจัดการภาพจากระยะไกลได้อย่างง่ายดาย ไลบรารีแบบอะซิงโครนัสดาวน์โหลดเช่นเดียวกับภาพแคชภายในโปรแกรมของพวกเขาเอง ห้องสมุดสนับสนุนแคชหลายชั้นสําหรับภาพที่ดาวน์โหลดมาซึ่งช่วยเพิ่มประสิทธิภาพของแอปอย่างมาก นั่นหมายความว่าภาพจะถูกเก็บไว้ในหน่วยความจําเช่นเดียวกับในดิสก์ดังนั้นจึงไม่จําเป็นต้องดาวน์โหลดอีกครั้ง
ไลบรารีนี้จัดการได้ง่ายมากและอำนวยความสะดวกในการจัดการแคช ผู้ใช้สามารถกำหนดขนาดและระยะเวลาของแคชได้อย่างง่ายดาย นอกจากนี้ยังมีระบบทำความสะอาดแคชอัตโนมัติที่ช่วยให้ผู้ใช้ป้องกันไม่ให้ห้องสมุดใช้ทรัพยากรมากเกินไป ฟีเจอร์ที่ยอดเยี่ยมอีกอย่างหนึ่งรวมอยู่ในการยกเลิกงาน ผู้ใช้สามารถยกเลิกกระบวนการดาวน์โหลดหรือดึงภาพได้อย่างง่ายดายหากไม่ต้องการอีกต่อไป
ห้องสมุด Kingfisher ช่วยให้นักพัฒนาใช้การดาวน์โหลดภาพและส่วนประกอบแคชภาพแยกต่างหากตามความต้องการของพวกเขา คุณสามารถสร้างแคชของคุณเองได้ตามความต้องการของคุณเองโดยใช้รหัส Swift มันปรับปรุงประสิทธิภาพแคชดิสก์โดยหลีกเลี่ยงการดําเนินงานดิสก์ที่ไม่จําเป็น ห้องสมุดเป็นโอเพนซอร์สและสามารถใช้ได้ภายใต้ใบอนุญาตไอที.
เริ่มต้นกับ Kingfisher
โคลนแหล่งล่าสุดโดยใช้คำสั่งต่อไปนี้
ติดตั้ง Kingfisher ผ่าน GitHub
$ git submodule add https://github.com/onevcat/Kingfisher.git
ดาวน์โหลดและแคชรูปภาพผ่านห้องสมุดรวดเร็ว
มันเป็นงานที่ยากมากในการดาวน์โหลดโปรแกรมภาพและเก็บไว้ในแคชโดยใช้ URL. แหล่งเปิดห้องสมุด Swift Kingfisher ทําให้มันง่ายสําหรับนักพัฒนาซอฟต์แวร์เพื่อดาวน์โหลดและแคชภาพได้อย่างมีประสิทธิภาพภายในโปรแกรมของตัวเอง. ห้องสมุดสนับสนุนภาพแคชทั้งในหน่วยความจําเช่นเดียวกับในดิสก์ โดยค่าเริ่มต้นจํานวนเงิน AM ที่จะใช้ไม่ได้ จํากัด และผู้ใช้สามารถกําหนดค่าตัวเอง
ดาวน์โหลดและแคชรูปภาพผ่านห้องสมุดรวดเร็ว
let urls = ["https://example.com/image1.jpg", "https://example.com/image2.jpg"]
.map { URL(string: $0)! }
let prefetcher = ImagePrefetcher(urls: urls) {
skippedResources, failedResources, completedResources in
print("These resources are prefetched: \(completedResources)")
}
prefetcher.start()
// Later when you need to display these images:
imageView.kf.setImage(with: urls[0])
anotherImageView.kf.setImage(with: urls[1])
การดูภาพภายในแอป Swift
ห้องสมุด Kingfisher ช่วยให้โปรแกรมเมอร์ซอฟต์แวร์รวมความสามารถในการดูภาพภายในแอปพลิเคชันได้อย่างง่ายดาย วิธีที่ง่ายที่สุดในการตั้งค่ามุมมองภาพคือการใช้ส่วนขยาย UIImageView ห้องสมุดจะดาวน์โหลดภาพจาก URL และนํามันไปทั้งแคชหน่วยความจําและแคชดิสก์และแสดงใน imageView เมื่อผู้ใช้หลังเรียกเดียวกัน URL, มันทันทีจะดึงและแสดงภาพจากแคช. นอกจากนี้ยังสนับสนุนฟังก์ชั่นต่างๆที่เกี่ยวข้องกับภาพเช่นภาพดาวน์โหลดซีดจางแสดงผู้ถือสถานที่ภาพมุมกลมและอื่น ๆ
ดูรูปภาพภายในแอป Swift
import Kingfisher
let url = URL(string: "https://example.com/image.png")
imageView.kf.setImage(with: url)
จัดเก็บด้วยตนเองหรือลบภาพแคช
ห้องสมุดเปิด Swift Kingfisher ช่วยให้โปรแกรมเมอร์สามารถจัดเก็บและลบภาพจากแคชได้อย่างง่ายดาย โดยค่าเริ่มต้นวิธีการขยายมุมมองสามารถใช้ในการจัดเก็บภาพที่ดึงเพื่อแคชโดยอัตโนมัติ แต่คุณสามารถทําได้ด้วยตนเองด้วยวิธีการ cache.store () นอกจากนี้คุณยังสามารถส่งข้อมูลต้นฉบับของภาพซึ่งช่วยให้ห้องสมุดเพื่อตรวจสอบรูปแบบที่ควรจะเก็บไว้ นอกจากนี้ยังให้การสนับสนุนสําหรับการลบภาพบางอย่างออกจากแคชด้วยตนเอง นอกจากนี้ยังสนับสนุนการล้างข้อมูลแคชทั้งหมดรายงานขนาดการจัดเก็บดิสก์และสร้างแคชของคุณเอง
ดูรูปภาพภายในแอป Swift
//Check whether an image in the cache
let cache = ImageCache.default
let cached = cache.isCached(forKey: cacheKey)
// To know where the cached image is:
let cacheType = cache.imageCachedType(forKey: cacheKey)
// `.memory`, `.disk` or `.none`.
// Store Image in the cache
let processor = RoundCornerImageProcessor(cornerRadius: 20)
imageView.kf.setImage(with: url, options: [.processor(processor)])
// Later
cache.isCached(forKey: cacheKey, processorIdentifier: processor.identifier)
// Retrieve image from cache
cache.retrieveImage(forKey: "cacheKey") { result in
switch result {
case .success(let value):
print(value.cacheType)
// If the `cacheType is `.none`, `image` will be `nil`.
print(value.image)
case .failure(let error):
print(error)
}
}