https://github.com/yushulx/razor-camera-library
A Razor Class Library built with Dynamsoft JavaScript Camera Enhancer SDK
https://github.com/yushulx/razor-camera-library
blazor camera csharp javascript razor webcam
Last synced: over 1 year ago
JSON representation
A Razor Class Library built with Dynamsoft JavaScript Camera Enhancer SDK
- Host: GitHub
- URL: https://github.com/yushulx/razor-camera-library
- Owner: yushulx
- License: mit
- Archived: true
- Created: 2023-12-11T08:48:16.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-14T03:12:15.000Z (over 2 years ago)
- Last Synced: 2025-02-10T09:21:14.038Z (over 1 year ago)
- Topics: blazor, camera, csharp, javascript, razor, webcam
- Language: HTML
- Homepage: https://www.nuget.org/packages/RazorCameraLibrary
- Size: 10.5 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Razor Camera Library
A Razor Class Library built using the [Dynamsoft JavaScript Camera Enhancer SDK](https://www.npmjs.com/package/dynamsoft-camera-enhancer), which provides a simple way to integrate camera access into Blazor applications.
## Online Demo
[https://yushulx.me/Razor-Camera-Library/](https://yushulx.me/Razor-Camera-Library/)
## Quick Usage
- Import and initialize the Razor Camera Library.
```csharp
@using RazorCameraLibrary
@code {
private CameraJsInterop? cameraJsInterop;
private CameraEnhancer? cameraEnhancer;
protected override async Task OnInitializedAsync()
{
cameraJsInterop = new CameraJsInterop(JSRuntime);
await cameraJsInterop.LoadJS();
cameraEnhancer = await cameraJsInterop.CreateCameraEnhancer();
await cameraEnhancer.SetVideoElement("videoContainer");
}
}
```
- Get a list of available cameras.
```csharp
List cameras = await cameraEnhancer.GetCameras();
```
- Set the camera resolution.
```csharp
await cameraEnhancer.SetResolution(640, 480);
```
- Open a camera.
```csharp
await cameraEnhancer.OpenCamera(cameras[0]);
```
- Acquire a camera frame for image processing.
```csharp
IJSObjectReference canvas = await cameraEnhancer.AcquireCameraFrame();
```
- Draw shapes on the camera overlay.
```csharp
await cameraEnhancer.DrawLine(0, 0, 100, 100);
await cameraEnhancer.DrawText("Hello World", 0, 0);
```
- Clear the camera overlay.
```csharp
await cameraEnhancer.ClearOverlay();
```
## API
### Camera Class
Represents a camera device with its device ID and label.
### CameraJsInterop Class
- `Task LoadJS()`: Loads and initializes the JavaScript module.
- `Task CreateCameraEnhancer()`: Creates a new CameraEnhancer instance.
### CameraEnhancer Class
- `Task> GetCameras()`: Gets a list of available cameras.
- `Task SetVideoElement(string elementId)`: Sets a div element as the video container.
- `Task OpenCamera(Camera camera)`: Opens a camera.
- `Task CloseCamera()`: Closes the current camera.
- `Task SetResolution(int width, int height)`: Sets the resolution of the camera.
- `Task AcquireCameraFrame()`: Acquires a frame from the camera and returns a JavaScript canvas object reference.
- `Task DrawLine(int x1, int y1, int x2, int y2)`: Draws a line on the camera overlay.
- `Task DrawText(string text, int x, int y)`: Draws text on the camera overlay.
- `Task ClearOverlay()`: Clears the camera overlay.
## Example
- [Blazor Barcode Scanner](https://github.com/yushulx/Razor-Camera-Library/tree/main/example)

## Build
```bash
cd RazorCameraLibrary
dotnet build --configuration Release
```