相机
免费插件
此插件免费开源,采用 MIT 许可证。
概述
Camera API 提供对设备相机的访问,用于拍照、录像和从相册中选择媒体文件。
安装
shell
composer require nativephp/mobile-camera使用
PHP (Livewire/Blade)
php
use Native\Mobile\Facades\Camera;
// 拍照
Camera::getPhoto();
// 录像
Camera::recordVideo();
// 设置最大录制时长
Camera::recordVideo(['maxDuration' => 30]);
// 使用流式 API
Camera::recordVideo()
->maxDuration(60)
->id('my-video-123')
->start();
// 从相册选择图片
Camera::pickImages('images', false); // 单张图片
Camera::pickImages('images', true); // 多张图片
Camera::pickImages('all', true); // 任意媒体类型JavaScript (Vue/React/Inertia)
js
import { camera, on, off, Events } from '#nativephp';
// 拍照
await camera.getPhoto();
// 带有用于跟踪的标识符
await camera.getPhoto()
.id('profile-pic');
// 录像
await camera.recordVideo()
.maxDuration(60);
// 选择图片
await camera.pickImages()
.images()
.multiple()
.maxItems(5);事件
PhotoTaken
当使用相机拍照时触发。
php
use Native\Mobile\Attributes\OnNative;
use Native\Mobile\Events\Camera\PhotoTaken;
#[OnNative(PhotoTaken::class)]
public function handlePhotoTaken(string $path)
{
// 处理拍摄的照片
$this->processPhoto($path);
}js
import { on, off, Events } from '#nativephp';
import { ref, onMounted, onUnmounted } from 'vue';
const photoPath = ref('');
const handlePhotoTaken = (payload) => {
photoPath.value = payload.path;
processPhoto(payload.path);
};
onMounted(() => {
on(Events.Camera.PhotoTaken, handlePhotoTaken);
});
onUnmounted(() => {
off(Events.Camera.PhotoTaken, handlePhotoTaken);
});VideoRecorded
当视频录制成功完成时触发。
Payload:
string $path- 录制视频的文件路径string $mimeType- 视频 MIME 类型(默认:'video/mp4')?string $id- 如果通过id()方法设置,则为可选标识符
VideoCancelled
当用户取消视频录制时触发。
方法
maxDuration(int $seconds)
设置最大录制时长(秒)。
id(string $id)
设置此录制的唯一标识符,用于与事件关联。
event(string $eventClass)
设置录制完成时要分发的自定义事件类。
remember()
将录制器的 ID 存储在会话中以便稍后检索。
start()
显式开始视频录制。
存储位置
照片:
- Android: 应用缓存目录
{cache}/captured.jpg - iOS: Application Support
~/Library/Application Support/Photos/captured.jpg
视频:
- Android: 应用缓存目录
{cache}/video_{timestamp}.mp4 - iOS: Application Support
~/Library/Application Support/Videos/captured_video_{timestamp}.mp4
注意事项
- 权限: 必须在
config/nativephp.php中启用camera权限才能使用相机功能 - 如果权限被拒绝,相机功能将静默失败
- 相机权限适用于照片、视频以及二维码/条形码扫描
- 文件格式:照片为 JPEG,视频为 MP4