function smj_handle_compression() { if (!isset($_FILES['smj_image'])) { wp_send_json_error(['message' => 'No file uploaded.']); } $file = $_FILES['smj_image']; $upload_dir = wp_upload_dir(); $temp_path = $upload_dir['path'] . '/' . $file['name']; move_uploaded_file($file['tmp_name'], $temp_path); $compressed_path = $upload_dir['path'] . '/compressed-' . $file['name']; // Use Imagick or GD for compression if (extension_loaded('imagick')) { $image = new Imagick($temp_path); $image->setImageCompression(Imagick::COMPRESSION_JPEG); $image->setImageCompressionQuality(70); $image->stripImage(); $image->writeImage($compressed_path); $image->clear(); $image->destroy(); } elseif (function_exists('imagecreatefromjpeg')) { $image = imagecreatefromjpeg($temp_path); imagejpeg($image, $compressed_path, 70); imagedestroy($image); } else { wp_send_json_error(['message' => 'Server does not support image compression.']); } unlink($temp_path); // Delete original file after compression $download_url = $upload_dir['url'] . '/compressed-' . $file['name']; // Return JSON response wp_send_json_success(['download_url' => esc_url($download_url)]); } add_action('admin_post_smj_compress', 'smj_handle_compression'); add_action('admin_post_nopriv_smj_compress', 'smj_handle_compression'); Shrink My JPEG – JPEG compressor utility

JEPG Compressor

[shrink_my_jpeg]