php-heic-to-jpg 项目教程

php-heic-to-jpg 项目教程

php-heic-to-jpg The easiest way to convert HEIC images to JPEG with PHP and Laravel framework 项目地址: https://gitcode.com/gh_mirrors/ph/php-heic-to-jpg

1、项目介绍

php-heic-to-jpg 是一个用于将 HEIC/HEIF 图像格式转换为 JPEG 格式的 PHP 包。该项目使用 Go 语言生成的二进制文件,无需依赖其他 PHP 库或第三方软件。它特别适用于 Laravel 框架,提供了简单易用的接口来处理图像转换。

2、项目快速启动

安装

在项目的根目录下运行以下命令来安装 php-heic-to-jpg 包:

composer require maestroerror/php-heic-to-jpg

使用

使用 HeicToJpeg 类非常简单。你需要提供 HEIC 图像的完整路径,并调用 convert 函数,然后可以选择调用 saveAs 方法保存为文件,或调用 get 方法获取转换后的 JPEG 文件内容。

// 1. 保存为文件
Maestroerror\HeicToJpg::convert("image1.heic")->saveAs("image1.jpg");

// 2. 获取内容(二进制)
$jpg = Maestroerror\HeicToJpg::convert("image1.heic")->get();

MacOS 用户

对于 MacOS 用户,如果需要指定系统架构,可以使用 convertOnMac 方法。默认情况下,架构设置为 amd64,但你也可以指定 arm64(AArch64,M1)。

Maestroerror\HeicToJpg::convertOnMac("image1.heic", "arm64")->saveAs("image1.jpg");

3、应用案例和最佳实践

案例1:在线图像转换服务

假设你正在开发一个在线图像转换服务,用户可以上传 HEIC 格式的图片并下载转换后的 JPEG 图片。使用 php-heic-to-jpg 包可以轻松实现这一功能。

if ($_FILES['image']['type'] == 'image/heic') {
    $convertedImage = Maestroerror\HeicToJpg::convert($_FILES['image']['tmp_name'])->get();
    header('Content-Type: image/jpeg');
    echo $convertedImage;
}

案例2:批量转换

如果你需要批量转换 HEIC 图片,可以使用循环来处理多个文件。

$files = glob('path/to/heic/files/*.heic');
foreach ($files as $file) {
    $outputFile = str_replace('.heic', '.jpg', $file);
    Maestroerror\HeicToJpg::convert($file)->saveAs($outputFile);
}

4、典型生态项目

1. Laravel 框架

php-heic-to-jpg 包特别适用于 Laravel 框架,可以轻松集成到 Laravel 项目中,提供高效的图像转换功能。

2. Go 语言

该项目使用 Go 语言生成的二进制文件,因此如果你对 Go 语言感兴趣,可以深入研究其背后的实现原理。

3. Composer 包管理

php-heic-to-jpg 是一个 Composer 包,因此它依赖于 Composer 进行安装和管理。如果你对 PHP 包管理感兴趣,可以进一步了解 Composer 的使用。

通过以上模块的介绍,你应该能够快速上手并使用 php-heic-to-jpg 项目进行 HEIC 到 JPEG 的图像转换。

php-heic-to-jpg The easiest way to convert HEIC images to JPEG with PHP and Laravel framework 项目地址: https://gitcode.com/gh_mirrors/ph/php-heic-to-jpg

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

``` $('#WSSliderModal').on('shown.bs.modal', function () { let currentFileItem; let cropper; const pond = FilePond.create(document.querySelector('#filepond'), { allowFileTypeValidation:true, allowImageTransform: true, acceptedFileTypes: ['image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/heic'], fileValidateTypeDetectType: (source, type) => new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = (e) => { const buffer = new Uint8Array(e.target.result); // JPEG检测:FF D8 FF if (buffer[0] === 0xFF && buffer[1] === 0xD8 && buffer[2] === 0xFF) { resolve('image/jpeg'); } // PNG检测:‰PNG else if (buffer[0] === 0x89 && buffer[1] === 0x50 && buffer[2] === 0x4E && buffer[3] === 0x47) { resolve('image/png'); } // GIF检测:GIF8 else if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46 && buffer[3] === 0x38) { resolve('image/gif'); } // WEBP检测:RIFF....WEBP else if (buffer[8] === 0x57 && buffer[9] === 0x45 && buffer[10] === 0x42 && buffer[11] === 0x50) { resolve('image/webp'); } else if ( buffer[4] === 0x66 && // f buffer[5] === 0x74 && // t buffer[6] === 0x79 && // y buffer[7] === 0x70 && // p ( (buffer[8] === 0x68 && buffer[9] === 0x65 && buffer[10] === 0x69 && buffer[11] === 0x63) || // heic (buffer[8] === 0x6D && buffer[9] === 0x69 && buffer[10] === 0x66 && buffer[11] === 0x31) // mif1 ) ) { resolve('image/heic'); } else { resolve(type); } }; reader.onerror = reject; reader.readAsArrayBuffer(source.slice(0, 12)); }), allowFileSizeValidation: true, maxFileSize: '5MB', imageCropAspectRatio: 770/1920, // 设置裁剪比例 imageResizeTargetWidth: 1920, // 目标宽度 imageResizeTargetHeight: 770, // 目标高度 imageResizeMode: 'cover', // 覆盖模式 stylePanelLayout: 'integrated', imagePreviewUpscale: true,// 允许放大预览 stylePanelAspectRatio: 770/1920, // 预览面板比例 allowMultiple: false, // 单文件上传 instantUpload: false, // 禁用自动上传 styleLoadIndicatorPosition: 'center bottom', styleProgressIndicatorPosition: 'right bottom', styleButtonRemoveItemPosition: 'left top', server: { url: '/json/wsslider_action.php', process: { url: '/wsslider_action.php?action=uploadWSSlider', onload: (response) => { const data = JSON.parse(response); return data.fileName; } } },```新增preview heic
最新发布
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翟苹星Trustworthy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值