Created
January 29, 2016 18:24
-
-
Save drewbaker/6cbfdaff1489b7990d04 to your computer and use it in GitHub Desktop.
Revisions
-
drewbaker created this gist
Jan 29, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,99 @@ /** * Several functions relatting to blurring images on uploaded. * @see https://codeable.io/community/how-to-watermark-wordpress-images-with-imagemagick/ */ add_image_size( 'background-image-blurred', 1920, 1080, true ); function generate_blurred_image( $meta ) { $time = substr( $meta['file'], 0, 7); // Extract the date in form "2015/04" $upload_dir = wp_upload_dir( $time ); // Get the "proper" upload dir if( isset($meta['sizes']['background-image-blurred']['file']) ) { $filename = $meta['sizes']['background-image-blurred']['file']; $meta['sizes']['background-image-blurred']['file'] = blur_image( $filename, $upload_dir ); } return $meta; } function blur_image( $filename, $upload_dir ) { $original_image_path = trailingslashit( $upload_dir['path'] ) . $filename; $image_resource = new Imagick( $original_image_path ); $image_resource->gaussianBlurImage( 10, 100 ); // See: http://phpimagick.com/Imagick/gaussianBlurImage return save_blurred_image( $image_resource, $original_image_path ); } function save_blurred_image( $image_resource, $original_image_path ) { $image_data = pathinfo( $original_image_path ); $new_filename = $image_data['filename'] . '-blurred.' . $image_data['extension']; // Build path to new blurred image $blurred_image_path = str_replace($image_data['basename'], $new_filename, $original_image_path); if ( ! $image_resource->writeImage( $blurred_image_path ) ) { return $image_data['basename']; } // Delete the placeholder image WordPress made now that it's been blurred unlink( $original_image_path ); return $new_filename; } add_filter( 'wp_generate_attachment_metadata', 'generate_blurred_image' ); function force_add_size( $metadata, $id ){ $upload_dir = wp_upload_dir(); $filename = $upload_dir['basedir'].'/'.$metadata['file']; $extension = strtolower(strrchr($metadata['file'], '.')); $newfilename = str_replace($extension, '-blurred', $filename).$extension; $image_resource = new Imagick( $filename); $image_resource->gaussianBlurImage( 10, 100 ); // See: http://phpimagick.com/Imagick/gaussianBlurImage $image_resource->writeImage( $newfilename ); /* $image_resource->resizeImage(1920, 1080, Imagick::FILTER_GAUSSIAN, 70); // http://www.dylanbeattie.net/magick/filters/result.html $image_resource->writeImage( $newfilename ); */ //unlink( $filename ); //delete original image altogether ---> you might want to update the post meta on this '_wp_attached_file' , you can actually get the attachment id from the filter, i have added it above. It would be best to have a actual image url in there! something like $sfile= str_replace($upload_dir['basedir'],'', $newfilename); update_post_meta($id, '_wp_attached_file', $sfile ); switch($extension){ case '.jpg': case '.jpeg': $type = 'image/jpeg'; break; case '.gif': $type = 'image/gif'; break; case '.png': $type = 'image/png'; break; default: $type = 'image/jpeg'; break; } $metadata['sizes']['background-image-blurred']= array( "file"=> $newfilename, "width"=> 1920, "height"=> 1080, "mime-type"=> $type ); return $metadata; } add_filter('wp_generate_attachment_metadata', 'force_add_size', 100, 2);