Swift (iOS/macOS) में छवियों के साथ कार्य
इस लेख में, हम Apple इकोसिस्टम में छवियों के साथ काम करने के लिए मुख्य दृष्टिकोण और उपकरणों पर विचार करेंगे। आप सीखेंगे कि iOS और macOS के लिए Swift के अंतर्निहित फ्रेमवर्क का उपयोग करके छवियों को कैसे लोड, प्रदर्शित, प्रोसेस और सेव करें। यह सामग्री शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगी।
छवियों के साथ काम करने के लिए मुख्य फ्रेमवर्क
Swift में ग्राफिक्स के साथ काम करने के लिए कई प्रमुख फ्रेमवर्क हैं:
- UIKit (iOS) —
UIImage,UIImageView - AppKit (macOS) —
NSImage,NSImageView - Core Image — फ़िल्टर और प्रसंस्करण
- Core Graphics — निम्न-स्तरीय ड्राइंग
- Metal — जटिल संचालन के लिए GPU-त्वरण
- SwiftUI —
Imageके साथ घोषणात्मक इंटरफ़ेस
छवियों को लोड और प्रदर्शित करना
दोनों प्लेटफार्मों के लिए बुनियादी उदाहरण देखें।
iOS (UIKit)
import UIKit
// assets से लोड करनाlet image = UIImage(named: "example")
// फ़ाइल से लोड करनाif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = UIImage(contentsOfFile: path)}
// UIImageView में प्रदर्शित करनाlet imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))imageView.image = imageimageView.contentMode = .scaleAspectFitmacOS (AppKit)
import AppKit
// assets से लोड करनाlet image = NSImage(named: "example")
// फ़ाइल से लोड करनाif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = NSImage(contentsOfFile: path)}
// NSImageView में प्रदर्शित करनाlet imageView = NSImageView(frame: NSRect(x: 0, y: 0, width: 200, height: 200))imageView.image = imageimageView.imageScaling = .scaleProportionallyUpOrDownSwiftUI (क्रॉस-प्लेटफ़ॉर्म)
import SwiftUI
struct ContentView: View { var body: some View { Image("example") .resizable() .aspectRatio(contentMode: .fit) .frame(width: 200, height: 200) }}Core Image के साथ छवि प्रसंस्करण
Core Image छवि प्रसंस्करण के लिए 200 से अधिक अंतर्निहित फ़िल्टर प्रदान करता है। यहाँ सेपिया लगाने का एक उदाहरण है:
import CoreImage
func applySepiaFilter(to image: UIImage) -> UIImage? { guard let ciImage = CIImage(image: image) else { return nil } let filter = CIFilter(name: "CISepiaTone") filter?.setValue(ciImage, forKey: kCIInputImageKey) filter?.setValue(0.8, forKey: kCIInputIntensityKey) guard let outputImage = filter?.outputImage else { return nil } let context = CIContext() guard let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil } return UIImage(cgImage: cgImage)}आकार बदलना और क्रॉप करना
अक्सर छवि का आकार बदलने या इसे केंद्र से क्रॉप करने की आवश्यकता होती है:
extension UIImage { func resized(to targetSize: CGSize) -> UIImage { let renderer = UIGraphicsImageRenderer(size: targetSize) return renderer.image { _ in self.draw(in: CGRect(origin: .zero, size: targetSize)) } } func croppedToSquare() -> UIImage { let side = min(size.width, size.height) let x = (size.width - side) / 2 let y = (size.height - side) / 2 let cropRect = CGRect(x: x, y: y, width: side, height: side) guard let cgImage = cgImage?.cropping(to: cropRect) else { return self } return UIImage(cgImage: cgImage) }}छवियों को सहेजना
आइए देखें कि छवि को गैलरी या फ़ाइल में कैसे सहेजें: