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
Skip to content