Sayangnya, kamera iPhone saat ini mengerikan untuk membaca barcode karena lensanya tetap fokus ke ∞. Semoga berhasil!
Alastair Stuart
1
Baru saja menyelesaikan masalah ini maka akan menulis pengamatan saya. Saya menguji beberapa opsi. RSBarcodes_Swift - mudah diintegrasikan, tetapi memiliki kinerja yang sangat buruk. ZBarSDK - juga mudah diimplementasikan, juga mengambil beberapa pencarian google untuk menemukan caranya. Tetapi memiliki kinerja yang sangat baik (tidak memindai datamatrix dan kode langka lainnya) berfungsi sangat baik untuk barcode / QRCode. Tapi Skandal adalah yang terbaik dari mereka semua. Sangat cepat, memindai segalanya. sayangnya harganya cukup mahal.
Katafalkas
Jawaban:
82
Kami memproduksi aplikasi 'Barcode' untuk iPhone. Itu dapat mendekode Kode QR. Kode sumber tersedia dari proyek zxing ; khusus, Anda ingin melihat klien iPhone dan port C ++ parsial dari perpustakaan inti . Port ini sedikit tua, dari sekitar rilis 0,9 dari kode Java, tetapi harus tetap berfungsi dengan baik.
Jika Anda perlu memindai format lain, seperti format 1D, Anda bisa melanjutkan port kode Java dalam proyek ini ke C ++.
EDIT: Barcode dan iphonekode dalam proyek sudah dihentikan sekitar awal 2014.
Melihat lisensi seperti apa yang digunakannya. Saya ingin membuat aplikasi berbayar yang menggunakan Zbar. Apakah itu mungkin berdasarkan perjanjian lisensi?
Radu
1
Untuk lebih jelasnya, pada saat ini, ZXing pada iPhone hanya mendukung QR Codes?
RefuX
Saya percaya lebih banyak porting ke C ++, tapi sayangnya portnya masih kasar dan ketinggalan jaman dari kode Java. Jadi, ya lebih banyak didukung meskipun mungkin tidak baik.
Sean Owen
ZXing untuk iPhone masih memiliki kebocoran memori sebesar 1,7 ver.
Yoon Lee
Saya mengerti dari daftar masalah pada git of zXing bahwa kita dapat memindai barcode hanya dalam mode landscape.
Sagrian
81
Lihat ZBar membaca QR Code dan ECN / ISBN code dan tersedia di bawah lisensi LGPL v2.
@ BenClayton apa artinya berbagi file objek aplikasi?
Dejell
@Odelya Mengirim file .o yang dibuat oleh Xcode kepada siapa pun, secara teoritis memungkinkan mereka untuk membangun aplikasi Anda. Saya jelas tidak senang melakukan hal ini (terutama untuk klien saya) sehingga ZBar keluar dari pertanyaan untuk kami. Halaman lisensi ZBar menyarankan Anda seharusnya 'berharap tidak ada yang meminta mereka!'
Ben Clayton
@ BenClayton A. Terima kasih B. Saya bisa mengubah komponen jika ada yang bertanya dan meminta pengguna aplikasi yang sudah mengunduh, untuk mengunduh versi yang lebih baru. Cukup? C. Jadi perpustakaan mana yang Anda gunakan?
Dejell
56
Seperti rilis iOS7Anda tidak perlu lagi menggunakan kerangka kerja eksternal atau perpustakaan. Ekosistem iOS dengan AVFoundation sekarang sepenuhnya mendukung pemindaian hampir setiap kode dari QR over EAN ke UPC.
Lihat saja Catatan Tek dan panduan pemrograman AVFoundation. AVMetadataObjectTypeQRCodeadalah temanmu
Jika Anda ingin mendeteksi barcode dari gambar di iOS8, tutorial ini mungkin bisa membantu.
NSDeveloper
Saya menemukan saya harus memanggil startRunningsesi untuk mendapatkan kode di atas untuk bekerja dalam kasus yang membantu siapa pun :)
Chris
13
Kamera iPhone 4 lebih dari sekadar kemampuan melakukan barcode. Perpustakaan barcode zebra crossing memiliki garpu pada github zxing-iphone . Ini open-source.
ZXing perpustakaan yang ditulis dalam Java dan kemudian porting ke Objective C / C ++ (hanya kode QR). Dan port lain ke ObjC telah dilakukan, oleh TheLevelUp: ZXingObjC
ZBar perangkat lunak sumber terbuka untuk membaca kode batang, berbasis C.
Menurut eksperimen saya, ZBar jauh lebih akurat dan cepat daripada ZXing, setidaknya di iPhone.
Menurut saya ZXingObjC adalah yang harus didorong ke atas dengan suara terbanyak sekarang. Saya belum menggunakannya belum , tapi deskripsi mengatakan itu pada paritas dengan ZXing 2.0.
Shaolo
Lisensi ZBar mengharuskan Anda untuk menawarkan file objek kepada pengguna, sehingga mereka dapat menjalankannya dan dapat memodifikasi perpustakaan mereka juga.
Anda dapat menemukan solusi iOS asli lainnya menggunakan Swift 4 dan Xcode 9 di bawah. AVFoundationKerangka kerja asli yang digunakan dalam solusi ini.
Bagian pertama adalah subclass UIViewControlleryang memiliki fungsi pengaturan dan penangan terkait AVCaptureSession.
importUIKitimportAVFoundationclassBarCodeScannerViewController:UIViewController{let captureSession =AVCaptureSession()var videoPreviewLayer:AVCaptureVideoPreviewLayer!var initialized =falselet barCodeTypes =[AVMetadataObject.ObjectType.upce,AVMetadataObject.ObjectType.code39,AVMetadataObject.ObjectType.code39Mod43,AVMetadataObject.ObjectType.code93,AVMetadataObject.ObjectType.code128,AVMetadataObject.ObjectType.ean8,AVMetadataObject.ObjectType.ean13,AVMetadataObject.ObjectType.aztec,AVMetadataObject.ObjectType.pdf417,AVMetadataObject.ObjectType.itf14,AVMetadataObject.ObjectType.dataMatrix,AVMetadataObject.ObjectType.interleaved2of5,AVMetadataObject.ObjectType.qr]overridefunc viewDidAppear(_ animated:Bool){super.viewDidAppear(animated)
setupCapture()// set observer for UIApplicationWillEnterForeground, so we know when to start the capture session again
NotificationCenter.default.addObserver(self,
selector:#selector(willEnterForeground),
name:.UIApplicationWillEnterForeground,
object:nil)}overridefunc viewWillDisappear(_ animated:Bool){super.viewWillDisappear(animated)// this view is no longer topmost in the app, so we don't need a callback if we return to the app.
NotificationCenter.default.removeObserver(self,
name:.UIApplicationWillEnterForeground,
object:nil)}// This is called when we return from another app to the scanner view
@objc func willEnterForeground(){
setupCapture()}func setupCapture(){var success =falsevar accessDenied =falsevar accessRequested =falselet authorizationStatus =AVCaptureDevice.authorizationStatus(for:.video)if authorizationStatus ==.notDetermined {// permission dialog not yet presented, request authorization
accessRequested =trueAVCaptureDevice.requestAccess(for:.video,
completionHandler:{(granted:Bool)->Voidinself.setupCapture();})return}if authorizationStatus ==.restricted || authorizationStatus ==.denied {
accessDenied =true}if initialized {
success =true}else{let deviceDiscoverySession =AVCaptureDevice.DiscoverySession(deviceTypes:[.builtInWideAngleCamera,.builtInTelephotoCamera,.builtInDualCamera],
mediaType:.video,
position:.unspecified)iflet captureDevice = deviceDiscoverySession.devices.first {do{let videoInput =tryAVCaptureDeviceInput(device: captureDevice)
captureSession.addInput(videoInput)
success =true}catch{NSLog("Cannot construct capture device input")}}else{NSLog("Cannot get capture device")}}if success {DispatchQueue.global().async {self.captureSession.startRunning()DispatchQueue.main.async {let captureMetadataOutput =AVCaptureMetadataOutput()self.captureSession.addOutput(captureMetadataOutput)let newSerialQueue =DispatchQueue(label:"barCodeScannerQueue")// in iOS 11 you can use main queue
captureMetadataOutput.setMetadataObjectsDelegate(self, queue: newSerialQueue)
captureMetadataOutput.metadataObjectTypes =self.barCodeTypes
self.videoPreviewLayer =AVCaptureVideoPreviewLayer(session:self.captureSession)self.videoPreviewLayer.videoGravity =.resizeAspectFill
self.videoPreviewLayer.frame =self.view.layer.bounds
self.view.layer.addSublayer(self.videoPreviewLayer)}}
initialized =true}else{// Only show a dialog if we have not just asked the user for permission to use the camera. Asking permission
// sends its own dialog to th user
if!accessRequested {// Generic message if we cannot figure out why we cannot establish a camera session
var message ="Cannot access camera to scan bar codes"#if(arch(i386)||arch(x86_64))&&(!os(macOS))
message ="You are running on the simulator, which does not hae a camera device. Try this on a real iOS device."#endif
if accessDenied {
message ="You have denied this app permission to access to the camera. Please go to settings and enable camera access permission to be able to scan bar codes"}let alertPrompt =UIAlertController(title:"Cannot access camera", message: message, preferredStyle:.alert)let confirmAction =UIAlertAction(title:"OK", style:.default, handler:{(action)->Voidinself.navigationController?.popViewController(animated:true)})
alertPrompt.addAction(confirmAction)self.present(alertPrompt, animated:true, completion:nil)}}}func handleCapturedOutput(metadataObjects:[AVMetadataObject]){if metadataObjects.count ==0{return}guardlet metadataObject = metadataObjects.first as?AVMetadataMachineReadableCodeObjectelse{return}if barCodeTypes.contains(metadataObject.type){iflet metaDataString = metadataObject.stringValue {
captureSession.stopRunning()
displayResult(code: metaDataString)return}}}func displayResult(code:String){let alertPrompt =UIAlertController(title:"Bar code detected", message: code, preferredStyle:.alert)iflet url = URL(string: code){let confirmAction =UIAlertAction(title:"Launch URL", style:.default, handler:{(action)->VoidinUIApplication.shared.open(url, options:[:], completionHandler:{(result)inif result {NSLog("opened url")}else{let alertPrompt =UIAlertController(title:"Cannot open url", message:nil, preferredStyle:.alert)let confirmAction =UIAlertAction(title:"OK", style:.default, handler:{(action)->Voidin})
alertPrompt.addAction(confirmAction)self.present(alertPrompt, animated:true, completion:{self.setupCapture()})}})})
alertPrompt.addAction(confirmAction)}let cancelAction =UIAlertAction(title:"Cancel", style:.cancel, handler:{(action)->Voidinself.setupCapture()})
alertPrompt.addAction(cancelAction)
present(alertPrompt, animated:true, completion:nil)}}
Bagian kedua adalah ekstensi dari UIViewControllersubclass kami untuk AVCaptureMetadataOutputObjectsDelegatetempat kami menangkap output yang ditangkap.
extensionBarCodeScannerViewController:AVCaptureMetadataOutputObjectsDelegate{func metadataOutput(_ output:AVCaptureMetadataOutput, didOutput metadataObjects:[AVMetadataObject], from connection:AVCaptureConnection){
handleCapturedOutput(metadataObjects: metadataObjects)}}
Pembaruan untuk Swift 4.2
.UIApplicationWillEnterForegroundberubah sebagai UIApplication.willEnterForegroundNotification.
apakah ini akan memberikan nama Produk, ukuran, harga, url produk, mata uang, nama penyimpanan? atau hanya akan memberikan nomor barcode @abdullahselek
Ok, akan coba itu. Terima kasih atas balasannya @abdullahselek
R. Mohan
5
Tidak yakin apakah ini akan membantu tetapi di sini ada tautan ke perpustakaan QR Code sumber terbuka . Seperti yang Anda lihat, beberapa orang telah menggunakan ini untuk membuat aplikasi untuk iphone.
Wikipedia memiliki artikel yang menjelaskan apa itu QR Codes . Menurut pendapat saya, QR Code jauh lebih cocok untuk tujuan daripada barcode standar di mana iphone terkait karena dirancang untuk jenis implementasi ini.
Jika dukungan untuk iPad 2 atau iPod Touch penting untuk aplikasi Anda, saya akan memilih SDK pemindai barcode yang dapat men-decode barcode dalam gambar buram, seperti SDK pemindai barcode Skandit untuk iOS dan Android. Penguraian gambar barcode yang buram juga membantu pada ponsel dengan kamera autofocus karena pengguna tidak harus menunggu autofocus untuk masuk.
Scandit hadir dengan paket harga komunitas gratis dan juga memiliki API produk yang memudahkan untuk mengubah nomor barcode menjadi nama produk.
(Penafian: Saya adalah salah satu pendiri Scandit)
apakah ada yang tahu apa nama resmi aplikasi Stefan di appstore? Saya ingin mengunduhnya sebelum saya menyelami kode yang sebenarnya.
macutan
3
Masalah dengan kamera iPhone adalah bahwa model pertama (yang banyak digunakan) memiliki kamera dengan fokus tetap yang tidak dapat mengambil gambar dengan fokus untuk jarak di bawah 2 kaki. Gambar buram dan terdistorsi dan jika diambil dari jarak yang lebih jauh tidak ada cukup detail / informasi dari barcode.
Beberapa perusahaan telah mengembangkan aplikasi iPhone yang dapat mengakomodasi hal itu dengan menggunakan teknologi de-blurring yang canggih. Aplikasi tersebut dapat Anda temukan di Apple app store: pic2shop, RedLaser dan ShopSavvy. Semua perusahaan telah mengumumkan bahwa mereka juga memiliki SDK yang tersedia - beberapa gratis atau syarat yang sangat istimewa, periksa yang keluar.
Saya sudah mencoba menggunakan ShopSavvy dengan iphone 3G. Ini lucu, tetapi sering crash, dan memiliki waktu yang sangat, sangat sulit membaca barcode yang sangat jelas dan datar.
James Moore
1
Dan saya baru saja mencoba pic2shop. Kutipan dari tunangan saya: "ini seharusnya membuat hidup kita lebih mudah BAGAIMANA?" Ini aplikasi yang imut, tetapi sebenarnya tidak bisa membaca barcode sejauh yang saya tahu.
James Moore
Format mana yang Anda coba baca? Saya mencoba menggunakan pic2shop untuk memindai EAN dan berfungsi dengan sangat baik. Biaya lisensinya mahal, bahkan lebih dari RedLaser.
iamj4de
2
dengan Swift 5 itu Sederhana dan Super cepat !!
Anda hanya perlu menambahkan cocoa pod "BarcodeScanner" di sini adalah kode lengkap
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '12.0'
target 'SimpleBarcodeScanner'
do
pod 'BarcodeScanner'
end
Pastikan menambahkan izin Kamera di file .plist Anda
Jika Anda mengembangkan untuk iOS> 10.2 dengan Swift 4 maka Anda dapat mencoba solusi saya. Saya bercampur ini dan ini tutorial dan datang dengan ViewController yang memindai QR Code dan print()keluar. Saya juga memiliki Switch di UI saya untuk menyalakan lampu kamera, mungkin bisa membantu juga. Untuk saat ini saya hanya mengujinya pada iPhone SE, beri tahu saya jika itu tidak berfungsi pada iPhone yang lebih baru.
Ini dia:
importUIKitimportAVFoundationclassQRCodeScanner:UIViewController,AVCaptureMetadataOutputObjectsDelegate{let captureSession:AVCaptureSession=AVCaptureSession()var videoPreviewLayer:AVCaptureVideoPreviewLayer?let qrCodeFrameView:UIView=UIView()var captureDevice:AVCaptureDevice?overridefunc viewDidLoad(){// Get the back-facing camera for capturing videos
let deviceDiscoverySession =AVCaptureDevice.DiscoverySession(deviceTypes:[.builtInWideAngleCamera,.builtInDualCamera], mediaType:AVMediaType.video, position:.back)
captureDevice = deviceDiscoverySession.devices.first
if captureDevice ==nil{
print("Failed to get the camera device")return}do{// Get an instance of the AVCaptureDeviceInput class using the previous device object.
let input =tryAVCaptureDeviceInput(device: captureDevice!)// Set the input device on the capture session.
captureSession.addInput(input)// Initialize a AVCaptureMetadataOutput object and set it as the output device to the capture session.
let captureMetadataOutput =AVCaptureMetadataOutput()
captureSession.addOutput(captureMetadataOutput)// Set delegate and use the default dispatch queue to execute the call back
captureMetadataOutput.setMetadataObjectsDelegate(self, queue:DispatchQueue.main)
captureMetadataOutput.metadataObjectTypes =[AVMetadataObject.ObjectType.qr]// Initialize the video preview layer and add it as a sublayer to the viewPreview view's layer.
videoPreviewLayer =AVCaptureVideoPreviewLayer(session: captureSession)iflet videoPreviewLayer = videoPreviewLayer {
videoPreviewLayer.videoGravity =AVLayerVideoGravity.resizeAspectFill
videoPreviewLayer.frame = view.layer.bounds
view.layer.addSublayer(videoPreviewLayer)// Start video capture.
captureSession.startRunning()iflet hasFlash = captureDevice?.hasFlash,let hasTorch = captureDevice?.hasTorch {if hasFlash && hasTorch {
view.bringSubview(toFront: bottomBar)try captureDevice?.lockForConfiguration()}}}// QR Code Overlay
qrCodeFrameView.layer.borderColor =UIColor.green.cgColor
qrCodeFrameView.layer.borderWidth =2
view.addSubview(qrCodeFrameView)
view.bringSubview(toFront: qrCodeFrameView)}catch{// If any error occurs, simply print it out and don't continue any more.
print("Error: \(error)")return}}// MARK: Buttons and Switch
@IBActionfunc switchFlashChanged(_ sender:UISwitch){do{if sender.isOn {
captureDevice?.torchMode =.on
}else{
captureDevice?.torchMode =.off
}}}// MARK: AVCaptureMetadataOutputObjectsDelegate
func metadataOutput(_ output:AVCaptureMetadataOutput, didOutput metadataObjects:[AVMetadataObject], from connection:AVCaptureConnection){// Check if the metadataObjects array is not nil and it contains at least one object.
if metadataObjects.count ==0{
qrCodeFrameView.frame =CGRect.zero
return}// Get the metadata object.
let metadataObj = metadataObjects[0]as!AVMetadataMachineReadableCodeObjectif metadataObj.type ==AVMetadataObject.ObjectType.qr {// If the found metadata is equal to the QR code metadata then update the status label's text and set the bounds
let barCodeObject = videoPreviewLayer?.transformedMetadataObject(for: metadataObj)
qrCodeFrameView.frame = barCodeObject!.bounds
print("QR Code: \(metadataObj.stringValue)")}}}
Terkadang bermanfaat juga untuk menghasilkan kode QR . Ada perpustakaan C yang luar biasa untuk ini yang berfungsi seperti pesona. Ini disebut libqrencode . Menulis tampilan khusus untuk menampilkan kode QR tidaklah sulit dan dapat dilakukan dengan pemahaman dasar tentang QuartzCore.
apakah Anda tahu tutorial tentang cara memasukkan ini ke proyek iOS xCode?
james
maukah Anda berbagi bagaimana Anda menghasilkan tampilan menggunakan kuartcore? akan menjadi penghemat waktu yang besar: P
ThomasRS
Itu benar. Namun, pastikan Anda patuh dengan lisensi perangkat lunak, perpustakaan diterbitkan bersama.
GorillaPatch
Pertanyaan ini tentang pengakuan, bukan generasi.
MonsieurDart
0
Anda dapat memeriksa ZBarSDK untuk membaca kode QR dan kode ECN / ISBN. Sangat mudah untuk mengintegrasikan coba kode berikut.
-(void)scanBarcodeWithZBarScanner
{// ADD: present a barcode reader that scans from the camera feed
ZBarReaderViewController*reader =[ZBarReaderViewController new];
reader.readerDelegate =self;
reader.supportedOrientationsMask =ZBarOrientationMaskAll;ZBarImageScanner*scanner = reader.scanner;// TODO: (optional) additional reader configuration here
// EXAMPLE: disable rarely used I2/5 to improve performance
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to:0];//Get the return value from controller
[reader setReturnBlock:^(BOOL value){}
dan di didFinishPickingMediaWithInfo kita mendapatkan nilai kode bar.
-(void) imagePickerController:(UIImagePickerController*) reader
didFinishPickingMediaWithInfo:(NSDictionary*) info
{// ADD: get the decode results
id<NSFastEnumeration> results =[info objectForKey:ZBarReaderControllerResults];ZBarSymbol*symbol =nil;for(symbol in results)// EXAMPLE: just grab the first barcode
break;// EXAMPLE: do something useful with the barcode data
barcodeValue = symbol.data;// EXAMPLE: do something useful with the barcode image
barcodeImage =[info objectForKey:UIImagePickerControllerOriginalImage];[_barcodeIV setImage:barcodeImage];//set the values for to TextFields
[self setBarcodeValue:YES];// ADD: dismiss the controller (NB dismiss from the *reader*!)
[reader dismissViewControllerAnimated:YES completion:nil];}
Jawaban:
Kami memproduksi aplikasi 'Barcode' untuk iPhone. Itu dapat mendekode Kode QR. Kode sumber tersedia dari proyek zxing ; khusus, Anda ingin melihat klien iPhone dan port C ++ parsial dari perpustakaan inti . Port ini sedikit tua, dari sekitar rilis 0,9 dari kode Java, tetapi harus tetap berfungsi dengan baik.
Jika Anda perlu memindai format lain, seperti format 1D, Anda bisa melanjutkan port kode Java dalam proyek ini ke C ++.
EDIT: Barcode dan
iphone
kode dalam proyek sudah dihentikan sekitar awal 2014.sumber
Lihat ZBar membaca QR Code dan ECN / ISBN code dan tersedia di bawah lisensi LGPL v2.
sumber
Seperti rilis
iOS7
Anda tidak perlu lagi menggunakan kerangka kerja eksternal atau perpustakaan. Ekosistem iOS dengan AVFoundation sekarang sepenuhnya mendukung pemindaian hampir setiap kode dari QR over EAN ke UPC.Lihat saja Catatan Tek dan panduan pemrograman AVFoundation.
AVMetadataObjectTypeQRCode
adalah temanmuBerikut ini adalah tutorial yang bagus yang menunjukkan langkah demi langkah: iPhone QR code scan library iOS7
Hanya sedikit contoh tentang cara mengaturnya:
sumber
startRunning
sesi untuk mendapatkan kode di atas untuk bekerja dalam kasus yang membantu siapa pun :)Kamera iPhone 4 lebih dari sekadar kemampuan melakukan barcode. Perpustakaan barcode zebra crossing memiliki garpu pada github zxing-iphone . Ini open-source.
sumber
liteqr adalah "Lite QR Reader di Objective C porting dari zxing" di github dan memiliki dukungan untuk Xcode 4.
sumber
Ada dua perpustakaan utama:
ZXing perpustakaan yang ditulis dalam Java dan kemudian porting ke Objective C / C ++ (hanya kode QR). Dan port lain ke ObjC telah dilakukan, oleh TheLevelUp: ZXingObjC
ZBar perangkat lunak sumber terbuka untuk membaca kode batang, berbasis C.
Menurut eksperimen saya, ZBar jauh lebih akurat dan cepat daripada ZXing, setidaknya di iPhone.
sumber
HOWTO: Tambahkan pembaca barcode ke aplikasi iPhone , yang mengarah ke ZBar iPhone SDK , terlihat sangat membantu ( dari utas lainnya ).
sumber
Anda dapat menemukan solusi iOS asli lainnya menggunakan Swift 4 dan Xcode 9 di bawah.
AVFoundation
Kerangka kerja asli yang digunakan dalam solusi ini.Bagian pertama adalah subclass
UIViewController
yang memiliki fungsi pengaturan dan penangan terkaitAVCaptureSession
.Bagian kedua adalah ekstensi dari
UIViewController
subclass kami untukAVCaptureMetadataOutputObjectsDelegate
tempat kami menangkap output yang ditangkap.Pembaruan untuk Swift 4.2
.UIApplicationWillEnterForeground
berubah sebagaiUIApplication.willEnterForegroundNotification
.sumber
metadataObjects
di dalam fungsi handleCapturedOutput .Tidak yakin apakah ini akan membantu tetapi di sini ada tautan ke perpustakaan QR Code sumber terbuka . Seperti yang Anda lihat, beberapa orang telah menggunakan ini untuk membuat aplikasi untuk iphone.
Wikipedia memiliki artikel yang menjelaskan apa itu QR Codes . Menurut pendapat saya, QR Code jauh lebih cocok untuk tujuan daripada barcode standar di mana iphone terkait karena dirancang untuk jenis implementasi ini.
sumber
Jika dukungan untuk iPad 2 atau iPod Touch penting untuk aplikasi Anda, saya akan memilih SDK pemindai barcode yang dapat men-decode barcode dalam gambar buram, seperti SDK pemindai barcode Skandit untuk iOS dan Android. Penguraian gambar barcode yang buram juga membantu pada ponsel dengan kamera autofocus karena pengguna tidak harus menunggu autofocus untuk masuk.
Scandit hadir dengan paket harga komunitas gratis dan juga memiliki API produk yang memudahkan untuk mengubah nomor barcode menjadi nama produk.
(Penafian: Saya adalah salah satu pendiri Scandit)
sumber
Anda dapat melihat Kode Sumber Pembaca DataMatrix iPhone iPhone Stefan Hafeneger ( proyek Google Code ; posting blog yang diarsipkan ) jika masih tersedia.
sumber
Masalah dengan kamera iPhone adalah bahwa model pertama (yang banyak digunakan) memiliki kamera dengan fokus tetap yang tidak dapat mengambil gambar dengan fokus untuk jarak di bawah 2 kaki. Gambar buram dan terdistorsi dan jika diambil dari jarak yang lebih jauh tidak ada cukup detail / informasi dari barcode.
Beberapa perusahaan telah mengembangkan aplikasi iPhone yang dapat mengakomodasi hal itu dengan menggunakan teknologi de-blurring yang canggih. Aplikasi tersebut dapat Anda temukan di Apple app store: pic2shop, RedLaser dan ShopSavvy. Semua perusahaan telah mengumumkan bahwa mereka juga memiliki SDK yang tersedia - beberapa gratis atau syarat yang sangat istimewa, periksa yang keluar.
sumber
dengan Swift 5 itu Sederhana dan Super cepat !!
Anda hanya perlu menambahkan cocoa pod "BarcodeScanner" di sini adalah kode lengkap
Pastikan menambahkan izin Kamera di file .plist Anda
Dan tambahkan Pemindai dan tangani hasilnya di ViewController Anda dengan cara ini
Masih dan ada pertanyaan atau tantangan, silakan periksa contoh aplikasi di sini dengan kode sumber lengkap
sumber
Untuk pemindai kode batang iOS 7 asli, lihat proyek saya di GitHub:
sumber
Saya percaya ini dapat dilakukan dengan menggunakan AVFramework, berikut adalah contoh kode untuk melakukan ini
sumber
Ini kode sederhana:
sumber
Jika Anda mengembangkan untuk iOS> 10.2 dengan Swift 4 maka Anda dapat mencoba solusi saya. Saya bercampur ini dan ini tutorial dan datang dengan ViewController yang memindai QR Code dan
print()
keluar. Saya juga memiliki Switch di UI saya untuk menyalakan lampu kamera, mungkin bisa membantu juga. Untuk saat ini saya hanya mengujinya pada iPhone SE, beri tahu saya jika itu tidak berfungsi pada iPhone yang lebih baru.Ini dia:
sumber
Terkadang bermanfaat juga untuk menghasilkan kode QR . Ada perpustakaan C yang luar biasa untuk ini yang berfungsi seperti pesona. Ini disebut libqrencode . Menulis tampilan khusus untuk menampilkan kode QR tidaklah sulit dan dapat dilakukan dengan pemahaman dasar tentang QuartzCore.
sumber
Anda dapat memeriksa ZBarSDK untuk membaca kode QR dan kode ECN / ISBN. Sangat mudah untuk mengintegrasikan coba kode berikut.
dan di didFinishPickingMediaWithInfo kita mendapatkan nilai kode bar.
sumber