在laravel中将.heic图像转换为jpg图像格式
我添加了干预/image包来转换laravel中的图像格式 图像转换成功,但上传后图像质量太差 原始图像 上传的图像在laravel中将.heic图像转换为jpg图像格式,laravel,imagemagick-convert,heic,Laravel,Imagemagick Convert,Heic,我添加了干预/image包来转换laravel中的图像格式 图像转换成功,但上传后图像质量太差 原始图像 上传的图像 要转换Heic图像,您必须使用imagick,是否可以改用它 这是如何安装的 试试看{ $image=new\Imagick(); $image->readImageBlob($image['base64']); $image->setImageFormat(“jpeg”); $image->setImageCompressionQuality(100); $image->
要转换Heic图像,您必须使用imagick,是否可以改用它 这是如何安装的
试试看{
$image=new\Imagick();
$image->readImageBlob($image['base64']);
$image->setImageFormat(“jpeg”);
$image->setImageCompressionQuality(100);
$image->writeImage($targetdir.$uid..jpg”);
}
捕获(\ImagickException$ex){
/**@var\Exception$ex*/
返回新的JSONResponse([“error”=>“Imagick无法转换图像,请检查是否满足所有要求。”,“details”=>$ex->getMessage()],Http::STATUS\u INTERNAL\u SERVER\u error);
}
有点晚了,但我也遇到了同样的问题。
我设法用heic2any js库()实现了这一点
我在客户端转换了图片,然后将其输入到客户端。
服务器正在查看它,因为它最初是作为jpg上传的
function convertHeicToJpg(input)
{
var fileName = $(input).val();
var fileNameExt = fileName.substr(fileName.lastIndexOf('.') + 1);
if(fileNameExt == "heic") {
var blob = $(input)[0].files[0]; //ev.target.files[0];
heic2any({
blob: blob,
toType: "image/jpg",
})
.then(function (resultBlob) {
var url = URL.createObjectURL(resultBlob);
$(input).parent().find(".upload-file").css("background-image", "url("+url+")"); //previewing the uploaded picture
//adding converted picture to the original <input type="file">
let fileInputElement = $(input)[0];
let container = new DataTransfer();
let file = new File([resultBlob], "heic"+".jpg",{type:"image/jpeg", lastModified:new Date().getTime()});
container.items.add(file);
fileInputElement.files = container.files;
console.log("added");
})
.catch(function (x) {
console.log(x.code);
console.log(x.message);
});
}
}
$("#input").change(function() {
convertHeicToJpg(this);
});
函数转换器heictojpg(输入)
{
var fileName=$(输入).val();
var fileNameExt=fileName.substr(fileName.lastIndexOf('.')+1);
如果(fileNameExt==“heic”){
var blob=$(输入)[0]。文件[0];//ev.target.files[0];
海尼({
滴:滴,
toType:“image/jpg”,
})
.then(函数(resultBlob){
var url=url.createObjectURL(resultBlob);
$(输入).parent().find(“.upload file”).css(“背景图像”,“url”(+url+));//预览上传的图片
//将转换后的图片添加到原始图片
让fileInputElement=$(输入)[0];
让容器=新的数据传输();
让file=newfile([resultBlob],“heic”+“.jpg”,{type:“image/jpeg”,lastModified:new Date().getTime()});
container.items.add(文件);
fileInputElement.files=container.files;
控制台日志(“添加”);
})
.catch(函数(x){
console.log(x.code);
console.log(x.message);
});
}
}
$(“#输入”).change(函数(){
convertHeicToJpg(本);
});
我正在做的是将heic图片转换为jpg,然后预览它。
之后,我将其添加到原始输入中。服务器端会将其视为上传的JPG。
转换时可能会出现一些延迟,因此我在上载时放置了加载程序gif。很抱歉,这不起作用。我仍然收到一个错误:无法从路径(/tmp/phpoMTE96)读取图像。
function convertHeicToJpg(input)
{
var fileName = $(input).val();
var fileNameExt = fileName.substr(fileName.lastIndexOf('.') + 1);
if(fileNameExt == "heic") {
var blob = $(input)[0].files[0]; //ev.target.files[0];
heic2any({
blob: blob,
toType: "image/jpg",
})
.then(function (resultBlob) {
var url = URL.createObjectURL(resultBlob);
$(input).parent().find(".upload-file").css("background-image", "url("+url+")"); //previewing the uploaded picture
//adding converted picture to the original <input type="file">
let fileInputElement = $(input)[0];
let container = new DataTransfer();
let file = new File([resultBlob], "heic"+".jpg",{type:"image/jpeg", lastModified:new Date().getTime()});
container.items.add(file);
fileInputElement.files = container.files;
console.log("added");
})
.catch(function (x) {
console.log(x.code);
console.log(x.message);
});
}
}
$("#input").change(function() {
convertHeicToJpg(this);
});