Download Dynamsoft Camera Enhancer from Dynamsoft website to get dce-ios-{version-number}.zip
. Unzip the package and find DynamsoftCameraEnhancer.framework.
Create a new Objective-C or Swift project.
Add DynamsoftCameraEnhancer.framework in your Xcode project.
Import Dynamsoft Camera Enhancer
Objective-C:
#import <DynamsoftCameraEnhancer/DynamsoftCameraEnhancer.h>
Swift:
import DynamsoftCameraEnhancer
This section is the guide for users to create a camera module in Objective-C or Swift project. After the installation of DCE, please add the following code to the new project.
Objective-C code sample:
#import "ViewController.h"
#import <DynamsoftCameraEnhancer/DynamsoftCameraEnhancer.h>
@interface ViewController ()
@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
@property(nonatomic, strong) DCECaptureView *dceView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self configurationDCE];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
- (void)configurationDCE{
_dceView = [DCECaptureView captureWithFrame:self.view.bounds];
[_dceView addOverlay];
[self.view addSubview:_dceView];
//Initialize License
iDCEDLSConnectionParameters* dcePara = [[iDCEDLSConnectionParameters alloc] init];
dcePara.organizationID = @"Put your organizationID here";
_dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromDLS:dcePara;
view:_dceView verificationDelegate:self];
//Make camera settings, turn on the camera
[_dce setCameraDesiredState:CAMERA_STATE_ON];
_dce.isEnable = YES;
}
- (void)CameraDLSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
NSLog(@"Verification: %@",error.userInfo);
}
Swift code sample:
import UIKit
import DynamsoftCameraEnhancer
class ViewController: UIViewController, CameraDLSLicenseVerificationDelegate, DBRTextResultDelegate {
var dce:DynamsoftCameraEnhancer! = nil
var dceView:DCECaptureView! = nil
override func viewDidLoad() {
super.viewDidLoad()
configurationDCE()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
func configurationDCE() {
dceView = DCECaptureView.init(view: self.view.bounds)
dceView.addOverlay()
self.view.addSubview(dceView)
//Init DCE license
let dls = iDCEDLSConnectionParameters()
dls.organizationID = "Put your organizationID here"
dce = DynamsoftCameraEnhancer.init(licenseFromDLS: dls, view: dceView, verificationDelegate: self)
//Turn on the camera
dce.setCameraDesiredState(.CAMERA_STATE_ON)
dce.isEnable = true
}
func cameraDLSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
print("Verification: \(String(describing: error))")
}
}
This section is displaying how to add DCE functions to the camera module we built just now.
For Objective-C users, please add the following code:
#import "ViewController.h"
#import <DynamsoftCameraEnhancer/DynamsoftCameraEnhancer.h>
@interface ViewController ()
@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
@property(nonatomic, strong) DCECaptureView *dceView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self configurationDCE];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
- (void)configurationDCE{
_dceView = [DCECaptureView captureWithFrame:self.view.bounds];
[_dceView addOverlay];
[self.view addSubview:_dceView];
//Initialize License
iDCEDLSConnectionParameters* dcePara = [[iDCEDLSConnectionParameters alloc] init];
dcePara.organizationID = @"Put your organizationID here";
_dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromDLS:dcePara;
view:_dceView verificationDelegate:self];
//Make camera settings, turn on the camera
[_dce setCameraDesiredState:CAMERA_STATE_ON];
_dce.isEnable = YES;
//*********Newly added****************
//*******Camera Settings**************
[dce setEnableDefaultAutoFocus:true];
[dce setEnableAutoZoom:true];
[dce setEnableFastMode:true];
[dce setEnableSensorControl:true];
[dce setEnableFrameFilter:true];
}
- (void)CameraDLSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
NSLog(@"Verification: %@",error.userInfo);
}
For Swift users, please add the following code:
import UIKit
import DynamsoftCameraEnhancer
class ViewController: UIViewController, CameraDLSLicenseVerificationDelegate, DBRTextResultDelegate {
var dce:DynamsoftCameraEnhancer! = nil
var dceView:DCECaptureView! = nil
override func viewDidLoad() {
super.viewDidLoad()
configurationDCE()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
func configurationDCE() {
dceView = DCECaptureView.init(view: self.view.bounds)
dceView.addOverlay()
self.view.addSubview(dceView)
//Init DCE license
let dls = iDCEDLSConnectionParameters()
dls.organizationID = "Put your organizationID here"
dce = DynamsoftCameraEnhancer.init(licenseFromDLS: dls, view: dceView, verificationDelegate: self)
//Turn on the camera
dce.setCameraDesiredState(.CAMERA_STATE_ON)
dce.isEnable = true
//*********************Newly added**********************
//************Add Camera Enhancer functions*************
dce.enableFastMode = true
dce.enableFrameFilter = true
dce.enableDefaultAutoFocus = true
dce.enableAutoZoom = true
dce.enableSensorControl = true
}
func cameraDLSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
print("Verification: \(String(describing: error))")
}
}
Run the project, now DCE functions have been added to the camera module.
This section is the guide for users to add a video stream decoder to the camera module. In this section, Dynamsoft Barcode Reader (DBR) will support decoding works. Before you start, please remember to add DynamsoftBarcodeReader.framework
to your xcode project.
Add this code snippet to the Objective-C project.
#import "ViewController.h"
#import <DynamsoftCameraEnhancer/DynamsoftCameraEnhancer.h>
//import Dynamsoft Barcode Reader for decoding
#import <DynamsoftBarcodeReader/DynamsoftBarcodeReader.h>
@interface ViewController ()
//Barcode Reader initialize
@property(nonatomic, strong) DynamsoftBarcodeReader *barcodeReader;
@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
@property(nonatomic, strong) DCECaptureView *dceView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self initDBR];
[self configurationDCE];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
- (void)configurationDCE{
_dceView = [DCECaptureView captureWithFrame:self.view.bounds];
[_dceView addOverlay];
[self.view addSubview:_dceView];
//Initialize License
iDCEDLSConnectionParameters* dcePara = [[iDCEDLSConnectionParameters alloc] init];
dcePara.organizationID = @"Put your organizationID here";
_dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromDLS:dcePara;
view:_dceView verificationDelegate:self];
//Make camera settings, turn on the camera
[_dce setCameraDesiredState:CAMERA_STATE_ON];
_dce.isEnable = YES;
//*********Newly added****************
//*******Camera Settings**************
[dce setEnableDefaultAutoFocus:true];
[dce setEnableAutoZoom:true];
[dce setEnableFastMode:true];
[dce setEnableSensorControl:true];
[dce setEnableFrameFilter:true];
}
//*************Newly added Barcode Reader Settings***************
//Dynamsoft Barcode Reader (DBR) initialization
- (void)initDBR{
iDMDLSConnectionParameters* dbrPara = [[iDMDLSConnectionParameters alloc] init];
//Initialize DBR License
dbrPara.organizationID = @"Put your organizationID here";
_barcodeReader = [[DynamsoftBarcodeReader alloc] initLicenseFromDLS:dbrPara verificationDelegate:self];
[_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"EnableFillBinaryVacancy" argumentValue:@"0" error:nil];
[_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"BlockSizeX" argumentValue:@"81" error:nil];
[_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"BlockSizeY" argumentValue:@"81" error:nil];
}
//****************************************************************
- (void)CameraDLSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
NSLog(@"Verification: %@",error.userInfo);
}
//***********************Newly added********************************
//******************Display text decode result**********************
- (void)textResultCallback:(NSInteger)frameId results:(NSArray<iTextResult *> *)results userData:(NSObject *)userData{
if (results.count > 0) {
_dce.isEnable = NO;
__weak ViewController *weakSelf = self;
[self showResult:results.firstObject.barcodeText
completion:^{
weakSelf.dce.isEnable = YES;
}];
}else{
return;
}
}
- (void)showResult:(NSString *)result completion:(void (^)(void))completion {
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertController *alert = [UIAlertController alertControllerWithTitle:result message:nil preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
completion();
}]];
[self presentViewController:alert animated:YES completion:nil];
});
}
For Swift users, please add the following code to the Swift project.
import UIKit
//Import Dynamsoft Barcode Reader
import DynamsoftBarcodeReader
import DynamsoftCameraEnhancer
class ViewController: UIViewController, CameraDLSLicenseVerificationDelegate, DBRTextResultDelegate {
var dce:DynamsoftCameraEnhancer! = nil
var dceView:DCECaptureView! = nil
//*********************Newly added**********************
//************init Dynamsoft Barcode Reader*************
var barcodeReader:DynamsoftBarcodeReader! = nil
override func viewDidLoad() {
super.viewDidLoad()
//*********************Newly added**********************
//************init Dynamsoft Barcode Reader*************
initDBR()
configurationDCE()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
//********************Newly added***********************
//**********Initialize Dynamsoft Barcode Reader*********
func initDBR() {
let dls = iDMDLSConnectionParameters()
dls.organizationID = "Put your organizationID here"
barcodeReader = DynamsoftBarcodeReader(licenseFromDLS: dls, verificationDelegate: self)
barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "EnableFillBinaryVacancy", argumentValue: "0", error: nil)
barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "BlockSizeX", argumentValue: "81", error: nil)
barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "BlockSizeY", argumentValue: "81", error: nil)
}
func configurationDCE() {
dceView = DCECaptureView.init(view: self.view.bounds)
dceView.addOverlay()
self.view.addSubview(dceView)
//Init DCE license
let dls = iDCEDLSConnectionParameters()
dls.organizationID = "Put your organizationID here"
dce = DynamsoftCameraEnhancer.init(licenseFromDLS: dls, view: dceView, verificationDelegate: self)
//Turn on the camera
dce.setCameraDesiredState(.CAMERA_STATE_ON)
dce.isEnable = true
//*********************Newly added**********************
//************Add Camera Enhancer functions*************
dce.enableFastMode = true
dce.enableFrameFilter = true
dce.enableDefaultAutoFocus = true
dce.enableAutoZoom = true
dce.enableSensorControl = true
//*********************Newly added**********************
//Instantiate DCE, send result and immediate result call back to Dynamsoft Barcode Reader
let para = DCESettingParameters.init()
para.cameraInstance = dce
para.textResultDelegate = self
barcodeReader.setCameraEnhancerPara(para)
}
func cameraDLSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
print("Verification: \(String(describing: error))")
}
//*********************Newly added**********************
//******Get and display barcode decoding text result****
func textResultCallback(_ frameId: Int, results: [iTextResult]?, userData: NSObject?) {
if results!.count > 0 {
dce.isEnable = false
showResult(results!.first!.barcodeText!) { [weak self] in
self?.dce.isEnable = true
}
}else{
return
}
}
private func showResult(_ result: String, completion: @escaping () -> Void) {
DispatchQueue.main.async {
let alert = UIAlertController(title: result, message: nil, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in completion() }))
self.present(alert, animated: true, completion: nil)
}
}
}
Run the project. Now a simple decode app has been built via Dynamsoft Camera Enhancer and Dynamsoft Barcode Reader.
latest version