The image_save_pre WordPress PHP Filter allows you to modify the GD image resource before it’s streamed to the browser.
This filter has been deprecated, use image_editor_save_pre instead.
Usage
add_filter('image_save_pre', 'your_custom_function', 10, 2);
function your_custom_function($image, $attachment_id) {
// your custom code here
return $image;
}
Parameters
- $image (resource|GdImage) – The GD image resource to be streamed.
- $attachment_id (int) – The attachment post ID.
More information
See WordPress Developer Resources: image_save_pre
Examples
Convert an image to grayscale
Convert the image to grayscale before streaming it to the browser.
add_filter('image_save_pre', 'convert_to_grayscale', 10, 2);
function convert_to_grayscale($image, $attachment_id) {
// Convert image to grayscale
imagefilter($image, IMG_FILTER_GRAYSCALE);
return $image;
}
Apply sepia effect to an image
Apply a sepia effect to the image before streaming it to the browser.
add_filter('image_save_pre', 'apply_sepia_effect', 10, 2);
function apply_sepia_effect($image, $attachment_id) {
// Apply sepia effect
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagefilter($image, IMG_FILTER_COLORIZE, 90, 55, 30);
return $image;
}
Add a watermark to an image
Add a watermark to the image before streaming it to the browser.
add_filter('image_save_pre', 'add_watermark', 10, 2);
function add_watermark($image, $attachment_id) {
// Load watermark image
$watermark = imagecreatefrompng('path/to/watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
// Set watermark position
$dest_x = imagesx($image) - $watermark_width - 10;
$dest_y = imagesy($image) - $watermark_height - 10;
// Merge watermark with the image
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
// Free up memory
imagedestroy($watermark);
return $image;
}
Resize an image
Resize the image to a specific width and height before streaming it to the browser.
add_filter('image_save_pre', 'resize_image', 10, 2);
function resize_image($image, $attachment_id) {
// Set desired width and height
$width = 800;
$height = 600;
// Create a new image with the desired dimensions
$new_image = imagecreatetruecolor($width, $height);
// Copy and resize the image
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $width, $height, imagesx($image), imagesy($image));
// Free up memory
imagedestroy($image);
return $new_image;
}
Increase brightness of an image
Increase the brightness of the image before streaming it to the browser.
add_filter('image_save_pre', 'increase_brightness', 10, 2);
function increase_brightness($image, $attachment_id) {
// Set the brightness level
$brightness = 40;
// Apply brightness filter
imagefilter($image, IMG_FILTER_BRIGHTNESS, $brightness);
return $image;
}
Rotate an image
Rotate the image by a specific angle before streaming it to the browser.
add_filter('image_save_pre', 'rotate_image', 10, 2);
function rotate_image($image, $attachment_id) {
// Set the rotation angle in degrees
$angle = 45;
// Set the background color (transparent)
$bg_color = imagecolorallocatealpha($image, 0, 0, 0, 127);
// Rotate the image
$rotated_image = imagerotate($image, $angle, $bg_color);
// Free up memory
imagedestroy($image);
return $rotated_image;
}
Apply a custom image filter
Apply a custom image filter to the image before streaming it to the browser.
add_filter('image_save_pre', 'apply_custom_filter', 10, 2);
function apply_custom_filter($image, $attachment_id) {
// Define your custom filter
$filter = array(
array(-1, -1, -1),
array(-1, 9, -1),
array(-1, -1, -1)
);
// Apply the custom filter
imageconvolution($image, $filter, 1, 0);
return $image;
}