ImageMagick, Intervention and Heic files
Trying to convert an image from .heic to .jpg on Laravel Forge and keep getting this error:
Unable to decode input
This is the method i have:
public function avatarUpload(Request $request)
{
$file = $request->file('avatar');
if (!$file) {
return response()->json(['error' => 'No file uploaded'], 400);
}
$privateTempPath = storage_path('app/private/temp');
$publicImagePath = storage_path('app/public/images/content');
$uuid = Str::uuid();
$extension = strtolower($file->getClientOriginalExtension());
$tempFileName = $uuid . '.' . $extension;
$finalFileName = $uuid . ($extension === 'heic' ? '.jpg' : '.' . $extension);
$tempFilePath = $privateTempPath . '/' . $tempFileName;
$finalFilePath = $publicImagePath . '/' . $finalFileName;
foreach ([$privateTempPath, $publicImagePath] as $path) {
if (!file_exists($path)) {
mkdir($path, 0755, true);
}
}
$file->move($privateTempPath, $tempFileName);
try {
if ($extension === 'heic') {
$manager = new ImageManager(new Driver());
$image = $manager->read($tempFilePath);
$image->toJpeg(90)->save($finalFilePath);
} else {
copy($tempFilePath, $finalFilePath);
}
OptimizerChainFactory::create()->optimize($finalFilePath);
return response()->json(['location' => url('storage/images/content/' . $finalFileName)], 200);
} catch (\Exception $e) {
Log::error('Error processing image: ' . $e->getMessage());
return response()->json(['error' => 'Failed to process image'], 500);
}
}
Running on PHP 8.3, and technically the libs are running right:
imagick module enabled
imagick module version 3.7.0
imagick classes Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Imagick using ImageMagick library version ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
ImageMagick copyright (C) 1999-2021 ImageMagick Studio LLC
ImageMagick release date 2021-01-25
ImageMagick number of supported formats: 247
ImageMagick supported formats 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, AVI, AVIF, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIDEO, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV
Please or to participate in this conversation.