Swift में इमेज प्रोसेसिंग (iOS/macOS)
इमेज के साथ काम करना मोबाइल और डेस्कटॉप ऐप डेवलपमेंट की एक मुख्य ज़रूरत है। Swift में iOS और macOS के लिए कई बिल्ट-इन टूल्स मौजूद हैं, जो इमेज को लोड करने, दिखाने, प्रोसेस करने और सेव करने में मदद करते हैं। इस लेख में हम Apple प्लेटफॉर्म पर ग्राफिक्स के साथ प्रभावी ढंग से काम करने के लिए मुख्य तरीकों और API को विस्तार से समझेंगे।
इमेज के लिए मुख्य क्लासेस
प्लेटफॉर्म के अनुसार अलग-अलग क्लासेस का उपयोग किया जाता है:
- iOS/tvOS/watchOS —
UIImage(UIKit) - macOS —
NSImage(AppKit)
दोनों क्लासेस में समान क्षमताएँ हैं, लेकिन API में अंतर है। क्रॉस-प्लेटफॉर्म डेवलपमेंट के लिए सामान्य प्रोटोकॉल या एक्सटेंशन का उपयोग किया जा सकता है।
इमेज लोड करना
सबसे आसान तरीका है ऐप के रिसोर्सेस से इमेज लोड करना:
// iOS
let image = UIImage(named: "example")
// macOS
let image = NSImage(named: "example")
नेटवर्क से लोड करने के लिए URLSession का उपयोग करें:
guard let url = URL(string: "https://example.com/image.jpg") else { return }
URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data, error == nil else { return }
DispatchQueue.main.async {
// iOS
let image = UIImage(data: data)
// macOS
let image = NSImage(data: data)
}
}.resume()
इमेज प्रदर्शित करना
स्क्रीन पर इमेज दिखाने के लिए संबंधित view-कम्पोनेंट का उपयोग करें:
- iOS —
UIImageView - macOS —
NSImageView
// iOS
let imageView = UIImageView(image: UIImage(named: "photo"))
imageView.contentMode = .scaleAspectFit
// macOS
let imageView = NSImageView(image: NSImage(named: "photo"))
imageView.imageScaling = .scaleProportionallyUpOrDown
Core Image के साथ इमेज प्रोसेसिंग
Core Image एक शक्तिशाली फ्रेमवर्क है जो इमेज फिल्टर और प्रोसेसिंग के लिए उपयोग होता है। आइए एक बुनियादी फिल्टर उदाहरण देखें:
import CoreImage
func applyFilter(to inputImage: CIImage) -> CIImage? {
guard let filter = CIFilter(name: "CISepiaTone") else { return nil }
filter.setValue(inputImage, forKey: kCIInputImageKey)
filter.setValue(0.8, forKey: kCIInputIntensityKey)
return filter.outputImage
}
// उपयोग
let originalImage = CIImage(image: UIImage(named: "photo")!)!
if let filteredImage = applyFilter(to: originalImage) {
let context = CIContext()
let cgImage = context.createCGImage(filteredImage, from: filteredImage.extent)
let resultImage = UIImage(cgImage: cgImage!)
}
लोकप्रिय Core Image फिल्टर:
CISepiaTone— सेपिया प्रभावCIGaussianBlur— गॉसियन ब्लरCIColorControls— चमक, कंट्रास्ट, संतृप्ति समायोजनCIVignette— विगनेट प्रभाव
पिक्सल और CGImage के साथ काम करना
पिक्सल डेटा के साथ निम्न-स्तरीय काम के लिए Core Graphics से CGImage का उपयोग करें:
func pixelColors(from image: UIImage) -> [[UIColor]]? {
guard let cgImage = image.cgImage else { return nil }
let width = cgImage.width
let height = cgImage.height
let colorSpace = CGColorSpaceCreateDeviceRGB()
let bytesPerPixel = 4
let bytesPerRow = bytesPerPixel * width
let bitsPerComponent = 8
var pixelData = [UInt8](repeating: 0, count: width * height * bytesPerPixel)
guard let context = CGContext(data: &pixelData,
width: width,
height: height,
bitsPerComponent: bitsPerComponent,
bytesPerRow: bytesPerRow, पुस्तकालय में भी
PHP में छवियों के साथ काम करना: लाइब्रेरी और टूल्स का अवलोकन
TypeScript में इमेज प्रोसेसिंग: Sharp और Jimp से resize और crop
Rust में XML के साथ काम: roxmltree, quick-xml और serde-xml-rs लाइब्रेरी
Mongoose JavaScript (Node.js): पूरी गाइड उदाहरणों के साथ