Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Barcodescanner | 5,233 | 5 | 3 years ago | 27 | August 19, 2017 | other | Java | |||
Barcode Scanner Libraries for Android | ||||||||||
React Native Vision Camera | 4,138 | 23 | 6 days ago | 76 | August 09, 2022 | 432 | mit | Swift | ||
📸 The Camera library that sees the vision. | ||||||||||
Html5 Qrcode | 3,256 | 4 | a day ago | 46 | April 07, 2022 | 229 | apache-2.0 | TypeScript | ||
A cross platform HTML5 QR code reader. See end to end implementation at: https://scanapp.org | ||||||||||
Cameradar | 3,047 | 8 months ago | 7 | November 08, 2021 | 22 | mit | Go | |||
Cameradar hacks its way into RTSP videosurveillance cameras | ||||||||||
Instascan | 2,365 | 55 | 6 | 3 years ago | 7 | April 26, 2017 | 177 | mit | JavaScript | |
HTML5 QR code scanner using your webcam | ||||||||||
React Native Qrcode Scanner | 1,986 | 171 | 9 | 20 days ago | 51 | February 11, 2022 | 123 | mit | JavaScript | |
A QR code scanner component for React Native. | ||||||||||
React Native Camera Kit | 1,971 | 46 | 11 | 9 days ago | 185 | September 15, 2022 | 76 | mit | Objective-C | |
A high performance, easy to use, rock solid camera library for React Native apps. | ||||||||||
Qrcodereaderview | 1,770 | 231 | 3 years ago | 2 | March 29, 2017 | 49 | Java | |||
Modification of ZXING Barcode Scanner project for easy Android QR-Code detection and AR purposes | ||||||||||
Qr Scanner | 1,640 | 7 | 11 | 6 months ago | 7 | February 22, 2022 | 75 | mit | TypeScript | |
Lightweight Javascript QR Code Scanner | ||||||||||
Barcodescanner | 1,572 | 33 | 9 months ago | 16 | March 11, 2018 | 21 | other | Swift | ||
:mag_right: A simple and beautiful barcode scanner. |
A high performance, easy to use, rock solid
camera library for React Native apps.
![]() |
|
yarn add react-native-camera-kit
cd ios && pod install && cd ..
Android: Add Kotlin to your project
Add the following uses-permission to your AndroidManifest.xml
(usually found at: android/src/main/
)
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Add the following usage descriptions to your Info.plist
(usually found at: ios/PROJECT_NAME/
)
<key>NSCameraUsageDescription</key>
<string>For taking photos</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>For saving photos</string>
yarn bootstrap
yarn example ios
or yarn example android
Full screen camera component that holds camera state and provides camera controls
import { CameraScreen } from 'react-native-camera-kit';
<CameraScreen
actions={{ rightButtonText: 'Done', leftButtonText: 'Cancel' }}
onBottomButtonPressed={(event) => this.onBottomButtonPressed(event)}
flashImages={{
// optional, images for flash state
on: require('path/to/image'),
off: require('path/to/image'),
auto: require('path/to/image'),
}}
cameraFlipImage={require('path/to/image')} // optional, image for flipping camera button
captureButtonImage={require('path/to/image')} // optional, image capture button
torchOnImage={require('path/to/image')} // optional, image for toggling on flash light
torchOffImage={require('path/to/image')} // optional, image for toggling off flash light
hideControls={false} // (default false) optional, hides camera controls
showCapturedImageCount={false} // (default false) optional, show count for photos taken during that capture session
/>
Additionally, the camera screen can be used for barcode scanning
<CameraScreen
...
// Barcode props
scanBarcode={true}
onReadCode={(event) => Alert.alert('QR code found')} // optional
showFrame={true} // (default false) optional, show frame with transparent layer (qr code or barcode will be read on this area ONLY), start animation for scanner,that stoped when find any code. Frame always at center of the screen
laserColor='red' // (default red) optional, color of laser in scanner frame
frameColor='white' // (default white) optional, color of border of scanner frame
/>
Barebones camera component
import { Camera, CameraType } from 'react-native-camera-kit';
<Camera
ref={(ref) => (this.camera = ref)}
cameraType={CameraType.Back} // front/back(default)
/>
Props | Type | Description |
---|---|---|
flashMode |
'on' /'off' /'auto'
|
Camera flash mode. Default: auto
|
focusMode |
'on' /'off'
|
Camera focus mode. Default: on
|
zoomMode |
'on' /'off'
|
Enable pinch to zoom camera. Default: on
|
torchMode |
'on' /'off'
|
Toggle flash light when camera is active. Default: off
|
ratioOverlay |
['int':'int', ...] |
Show a guiding overlay in the camera preview for the selected ratio. Does not crop image as of v9.0. Example: ['16:9', '1:1', '3:4']
|
ratioOverlayColor |
Color | Any color with alpha. Default: '#ffffff77'
|
resetFocusTimeout |
Number |
iOS only. Dismiss tap to focus after this many milliseconds. Default 0 (disabled). Example: 5000 is 5 seconds. |
resetFocusWhenMotionDetected |
Boolean |
iOS only. Dismiss tap to focus when focus area content changes. Native iOS feature, see documentation: https://developer.apple.com/documentation/avfoundation/avcapturedevice/1624644-subjectareachangemonitoringenabl?language=objc). Default true . |
onOrientationChange |
Function | Callback when physical device orientation changes. Returned event contains orientation . Ex: onOrientationChange={(event) => console.log(event.nativeEvent.orientation)} . Use import { Orientation } from 'react-native-camera-kit'; if (event.nativeEvent.orientation === Orientation.PORTRAIT) { ... } to understand the new value |
Props | Type | Description |
---|---|---|
scanBarcode |
Boolean | Enable barcode scanner. Default: false
|
showFrame |
Boolean | Show frame in barcode scanner. Default: false
|
laserColor |
Color | Color of barcode scanner laser visualization. Default: red
|
frameColor |
Color | Color of barcode scanner frame visualization. Default: yellow
|
surfaceColor |
Color | Color of barcode scanner surface visualization. Default: blue
|
onReadCode |
Function | Callback when scanner successfully reads barcode. Returned event contains codeStringValue . Default: null . Ex: onReadCode={(event) => console.log(event.nativeEvent.codeStringValue)}
|
Note: Must be called on a valid camera ref
Capture image as JPEG.
A temporary file is created. You must move this file to a permanent location (e.g. the app's 'Documents' folder) if you need it beyond the current session of the app as it may be deleted when the user leaves the app. You can move files by using a file system library such as react-native-fs or expo-filesystem.
(On Android we currently have an unsupported outputPath
prop but it's subject to change at any time).
Note that the reason you're getting a URL despite it being a file is because Android 10+ encourages URIs. To keep things consistent regardless of settings or platform we always send back a URI.
const { uri } = await this.camera.capture();
// uri = 'file:///data/user/0/com.myorg.myapp/cache/ckcap123123123123.jpg'
If you want to store it permanently, here's an example using react-native-fs:
import RNFS from 'react-native-fs';
// [...]
let { uri } = await this.camera.capture();
if (uri.startsWith('file://')) {
// Platform dependent, iOS & Android uses '/'
const pathSplitter = '/';
// file:///foo/bar.jpg => /foo/bar.jpg
const filePath = uri.replace('file://', '');
// /foo/bar.jpg => [foo, bar.jpg]
const pathSegments = filePath.split(pathSplitter);
// [foo, bar.jpg] => bar.jpg
const fileName = pathSegments[pathSegments.length - 1];
await RNFS.moveFile(filePath, `${RNFS.DocumentDirectoryPath}/${fileName}`);
uri = `file://${destFilePath}`;
}
const isCameraAuthorized = await Camera.checkDeviceCameraAuthorizationStatus();
return values:
AVAuthorizationStatusAuthorized
returns true
AVAuthorizationStatusNotDetermined
returns -1
otherwise, returns false
const isUserAuthorizedCamera = await Camera.requestDeviceCameraAuthorization();
AVAuthorizationStatusAuthorized
returns true
otherwise, returns false
The MIT License.
See LICENSE