diff --git a/image_optimizer_nat_OC_20_22_1_2_0.ocmod.zip b/image_optimizer_nat_OC_20_22_1_2_0.ocmod.zip index 4db6ca8..24a5721 100644 Binary files a/image_optimizer_nat_OC_20_22_1_2_0.ocmod.zip and b/image_optimizer_nat_OC_20_22_1_2_0.ocmod.zip differ diff --git a/upload/admin/controller/module/img_opti.php b/upload/admin/controller/module/img_opti.php index 56b7af7..e5551bf 100644 --- a/upload/admin/controller/module/img_opti.php +++ b/upload/admin/controller/module/img_opti.php @@ -1999,16 +1999,18 @@ class ControllerModuleImgOpti extends Controller { $type = isset($this->request->post['module_img_opti_wm_type']) ? $this->request->post['module_img_opti_wm_type'] : ''; $image = isset($this->request->post['module_img_opti_wm_image']) ? $this->request->post['module_img_opti_wm_image'] : ''; - + $bg_mode = isset($this->request->post['wm_preview_bg']) ? $this->request->post['wm_preview_bg'] : 'product'; $base_file = ''; - $query_prod = $this->db->query("SELECT image FROM `" . DB_PREFIX . "product` WHERE image IS NOT NULL AND image != '' AND image LIKE 'catalog/%' LIMIT 1"); - if ($query_prod->num_rows && is_file(DIR_IMAGE . $query_prod->row['image'])) { - $base_file = DIR_IMAGE . $query_prod->row['image']; - } else { - $base_file = DIR_IMAGE . 'no_image.png'; - if (!is_file($base_file)) { - $base_file = DIR_IMAGE . 'catalog/no_image.png'; + if ($bg_mode === 'product') { + $query_prod = $this->db->query("SELECT image FROM `" . DB_PREFIX . "product` WHERE image IS NOT NULL AND image != '' AND image LIKE 'catalog/%' LIMIT 1"); + if ($query_prod->num_rows && is_file(DIR_IMAGE . $query_prod->row['image'])) { + $base_file = DIR_IMAGE . $query_prod->row['image']; + } else { + $base_file = DIR_IMAGE . 'no_image.png'; + if (!is_file($base_file)) { + $base_file = DIR_IMAGE . 'catalog/no_image.png'; + } } } @@ -2018,40 +2020,54 @@ class ControllerModuleImgOpti extends Controller { @mkdir($compare_dir, 0755, true); } - $base_img = false; - if (is_file($base_file)) { - $ext = strtolower(pathinfo($base_file, PATHINFO_EXTENSION)); - if ($ext === 'jpg' || $ext === 'jpeg') { - $base_img = @imagecreatefromjpeg($base_file); - } elseif ($ext === 'png') { - $base_img = @imagecreatefrompng($base_file); - } elseif ($ext === 'webp' && function_exists('imagecreatefromwebp')) { - $base_img = @imagecreatefromwebp($base_file); - } - } - - if (!$base_img) { - $base_img = imagecreatetruecolor(500, 500); - $bg = imagecolorallocate($base_img, 240, 240, 240); - imagefill($base_img, 0, 0, $bg); - } - $preview_w = 500; $preview_h = 500; $preview_im = imagecreatetruecolor($preview_w, $preview_h); - $white = imagecolorallocate($preview_im, 255, 255, 255); - imagefill($preview_im, 0, 0, $white); - $orig_w = imagesx($base_img); - $orig_h = imagesy($base_img); - $scale = min($preview_w / $orig_w, $preview_h / $orig_h); - $new_w = intval($orig_w * $scale); - $new_h = intval($orig_h * $scale); - $dst_x = intval(($preview_w - $new_w) / 2); - $dst_y = intval(($preview_h - $new_h) / 2); + if ($bg_mode === 'white') { + $white = imagecolorallocate($preview_im, 255, 255, 255); + imagefill($preview_im, 0, 0, $white); + } elseif ($bg_mode === 'transparent') { + $c1 = imagecolorallocate($preview_im, 255, 255, 255); + $c2 = imagecolorallocate($preview_im, 226, 232, 240); + imagefill($preview_im, 0, 0, $c1); + $sqSize = 25; + for ($x = 0; $x < $preview_w; $x += $sqSize) { + for ($y = 0; $y < $preview_h; $y += $sqSize) { + if ((($x / $sqSize) + ($y / $sqSize)) % 2 === 0) { + imagefilledrectangle($preview_im, $x, $y, $x + $sqSize - 1, $y + $sqSize - 1, $c2); + } + } + } + } else { + $white = imagecolorallocate($preview_im, 255, 255, 255); + imagefill($preview_im, 0, 0, $white); - imagecopyresampled($preview_im, $base_img, $dst_x, $dst_y, 0, 0, $new_w, $new_h, $orig_w, $orig_h); - imagedestroy($base_img); + $base_img = false; + if (is_file($base_file)) { + $ext = strtolower(pathinfo($base_file, PATHINFO_EXTENSION)); + if ($ext === 'jpg' || $ext === 'jpeg') { + $base_img = @imagecreatefromjpeg($base_file); + } elseif ($ext === 'png') { + $base_img = @imagecreatefrompng($base_file); + } elseif ($ext === 'webp' && function_exists('imagecreatefromwebp')) { + $base_img = @imagecreatefromwebp($base_file); + } + } + + if ($base_img) { + $orig_w = imagesx($base_img); + $orig_h = imagesy($base_img); + $scale = min($preview_w / $orig_w, $preview_h / $orig_h); + $new_w = intval($orig_w * $scale); + $new_h = intval($orig_h * $scale); + $dst_x = intval(($preview_w - $new_w) / 2); + $dst_y = intval(($preview_h - $new_h) / 2); + + imagecopyresampled($preview_im, $base_img, $dst_x, $dst_y, 0, 0, $new_w, $new_h, $orig_w, $orig_h); + imagedestroy($base_img); + } + } imagepng($preview_im, $temp_preview); imagedestroy($preview_im); diff --git a/upload/admin/view/template/module/img_opti.tpl b/upload/admin/view/template/module/img_opti.tpl index cc9ad5c..b28eff0 100644 --- a/upload/admin/view/template/module/img_opti.tpl +++ b/upload/admin/view/template/module/img_opti.tpl @@ -1,4 +1,4 @@ - +