From f402c0831a94ef7a713312a5919cd92120d93b02 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 24 Dec 2025 11:15:39 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20feat(preview-laporan):=20Optimas?= =?UTF-8?q?i=20tampilan=20gambar=20dengan=20resize=20otomatis=20dan=20peni?= =?UTF-8?q?ngkatan=20DPI=20PDF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Perubahan pada PreviewLaporanService: - Menambahkan set_option('dpi', '96') untuk meningkatkan kualitas render PDF Perubahan pada foto-jaminan blade template: - Implementasi helper function `resize_image()` untuk resize gambar jaminan - Mengubah gambar asli menjadi versi yang sudah di-resize (800x400px, quality 25%) - Mengoptimalkan ukuran file gambar untuk preview laporan - Menjaga aspect ratio gambar tetap proporsional - Meningkatkan performa loading gambar di PDF preview Optimasi ini bertujuan untuk: - Mengurangi ukuran file PDF hasil preview - Meningkatkan kecepatan loading gambar - Menjaga kualitas visual yang tetap baik - Mengurangi memory usage saat generate PDF --- app/Services/PreviewLaporanService.php | 1 + .../penilai/components/foto-jaminan.blade.php | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/Services/PreviewLaporanService.php b/app/Services/PreviewLaporanService.php index d281e21..2a0dc11 100644 --- a/app/Services/PreviewLaporanService.php +++ b/app/Services/PreviewLaporanService.php @@ -347,6 +347,7 @@ class PreviewLaporanService $pdf->setPaper('A4', 'portrait'); $pdf->set_option('isHtml5ParserEnabled', true); $pdf->set_option('isPhpEnabled', true); + $pdf->set_option('dpi', '96'); return $pdf; } diff --git a/resources/views/penilai/components/foto-jaminan.blade.php b/resources/views/penilai/components/foto-jaminan.blade.php index 5689d79..3d0fba4 100644 --- a/resources/views/penilai/components/foto-jaminan.blade.php +++ b/resources/views/penilai/components/foto-jaminan.blade.php @@ -154,10 +154,12 @@ ? $fallbackPath : $originalPath; + $resizedPath = resize_image($pathToUse, 800, 400, 25); + $filePath = $statusLpj == 1 - ? storage_path('app/public/' . $pathToUse) - : asset('storage/' . $pathToUse); + ? storage_path('app/public/' . $resizedPath) + : asset('storage/' . $resizedPath); $extension = strtolower(pathinfo($pathToUse, PATHINFO_EXTENSION)); $isImage = in_array($extension, [ @@ -248,12 +250,16 @@ style="align-content: center; text-align: center; margin-bottom: 20px"> @foreach ($chunkedPhotos as $item) @php + $originalPath = $item['path']; + $resizedPath = resize_image($originalPath, 800, 400, 25); + + $filePath = $statusLpj == 1 - ? storage_path('app/public/' . $item['path']) - : asset('storage/' . $item['path']); + ? storage_path('app/public/' . $resizedPath) + : asset('storage/' . $resizedPath); - $extension = strtolower(pathinfo($item['path'], PATHINFO_EXTENSION)); + $extension = strtolower(pathinfo($originalPath, PATHINFO_EXTENSION)); $isImage = in_array($extension, [ 'jpg', 'jpeg',