/** * Crop an Image to a given size. * * @since 2.1.0 * * @param string|int $src_file The source file or Attachment ID. * @param int $src_x The start x position to crop from. * @param int $src_y The start y position to crop from. * @param int $src_w The width to crop. * @param int $src_h The height to crop. * @param int $dst_w The destination width. * @param int $dst_h The destination height. * @param int $src_abs Optional. If the source crop points are absolute. * @param string $dst_file Optional. The destination file to write to. * @return string New filepath on success, String error message on failure. */ function wp_crop_image($src_file, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false) { if (is_numeric($src_file)) { // Handle int as attachment ID $src_file = get_attached_file($src_file); } $src = wp_load_image($src_file); if (!is_resource($src)) { return $src; } $dst = wp_imagecreatetruecolor($dst_w, $dst_h); if ($src_abs) { $src_w -= $src_x; $src_h -= $src_y; } if (function_exists('imageantialias')) { imageantialias($dst, true); } imagecopyresampled($dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); imagedestroy($src); // Free up memory if (!$dst_file) { $dst_file = str_replace(basename($src_file), 'cropped-' . basename($src_file), $src_file); } $dst_file = preg_replace('/\\.[^\\.]+$/', '.jpg', $dst_file); if (imagejpeg($dst, $dst_file, apply_filters('jpeg_quality', 90, 'wp_crop_image'))) { return $dst_file; } else { return false; } }
/** * This function is almost equal to the image_resize (native function of wordpress) */ function image_resize($file, $max_w, $max_h, $crop = false, $far = false, $iar = false, $dest_path = null, $jpeg_quality = 90) { $image = wp_load_image($file); if (!is_resource($image)) { return new WP_Error('error_loading_image', $image); } $size = @getimagesize($file); if (!$size) { return new WP_Error('invalid_image', __('Could not read image size'), $file); } list($orig_w, $orig_h, $orig_type) = $size; $dims = mf_image_resize_dimensions($orig_w, $orig_h, $max_w, $max_h, $crop, $far, $iar); if (!$dims) { $dims = array(0, 0, 0, 0, $orig_w, $orig_h, $orig_w, $orig_h); } list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims; $newimage = imagecreatetruecolor($dst_w, $dst_h); imagealphablending($newimage, false); imagesavealpha($newimage, true); $transparent = imagecolorallocatealpha($newimage, 255, 255, 255, 127); imagefilledrectangle($newimage, 0, 0, $dst_w, $dst_h, $transparent); imagecopyresampled($newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); // convert from full colors to index colors, like original PNG. if (IMAGETYPE_PNG == $orig_type && !imageistruecolor($image)) { imagetruecolortopalette($newimage, false, imagecolorstotal($image)); } // we don't need the original in memory anymore imagedestroy($image); $info = pathinfo($dest_path); $dir = $info['dirname']; $ext = $info['extension']; $name = basename($dest_path, ".{$ext}"); $destfilename = "{$dir}/{$name}.{$ext}"; if (IMAGETYPE_GIF == $orig_type) { if (!imagegif($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } elseif (IMAGETYPE_PNG == $orig_type) { if (!imagepng($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } else { // all other formats are converted to jpg //Todo: add option for use progresive JPG //imageinterlace($newimage, true); //Progressive JPG if (!imagejpeg($newimage, $destfilename, apply_filters('jpeg_quality', $jpeg_quality, 'image_resize'))) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } imagedestroy($newimage); // Set correct file permissions $stat = stat(dirname($destfilename)); $perms = $stat['mode'] & 0666; //same permissions as parent folder, strip off the executable bits @chmod($destfilename, $perms); return $destfilename; }
/** * Crop an Image to a given size. * * @since 2.1.0 * * @param string|int $src The source file or Attachment ID. * @param int $src_x The start x position to crop from. * @param int $src_y The start y position to crop from. * @param int $src_w The width to crop. * @param int $src_h The height to crop. * @param int $dst_w The destination width. * @param int $dst_h The destination height. * @param int $src_abs Optional. If the source crop points are absolute. * @param string $dst_file Optional. The destination file to write to. * @return string|WP_Error|false New filepath on success, WP_Error or false on failure. */ function wp_crop_image($src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false) { if (0 == $src_x && 0 == $src_y && $src_w == $dst_w && $src_h == $dst_h) { return is_numeric($src) ? get_attached_file($src) : $src; } if (is_numeric($src)) { // Handle int as attachment ID $src_file = get_attached_file($src); if (!file_exists($src_file)) { // If the file doesn't exist, attempt a url fopen on the src link. // This can occur with certain file replication plugins. $post = get_post($src); $image_type = $post->post_mime_type; $src = load_image_to_edit($src, $post->post_mime_type, 'full'); } else { $size = @getimagesize($src_file); $image_type = $size ? $size['mime'] : ''; $src = wp_load_image($src_file); } } else { $size = @getimagesize($src); $image_type = $size ? $size['mime'] : ''; $src = wp_load_image($src); } if (!is_resource($src)) { return new WP_Error('error_loading_image', $src, $src_file); } $dst = wp_imagecreatetruecolor($dst_w, $dst_h); if ($src_abs) { $src_w -= $src_x; $src_h -= $src_y; } if (function_exists('imageantialias')) { imageantialias($dst, true); } imagecopyresampled($dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); imagedestroy($src); // Free up memory if (!$dst_file) { $dst_file = str_replace(basename($src_file), 'cropped-' . basename($src_file), $src_file); } if ('image/png' != $image_type) { $dst_file = preg_replace('/\\.[^\\.]+$/', '.jpg', $dst_file); } // The directory containing the original file may no longer exist when // using a replication plugin. wp_mkdir_p(dirname($dst_file)); if ('image/png' == $image_type && imagepng($dst, $dst_file)) { return $dst_file; } elseif (imagejpeg($dst, $dst_file, apply_filters('jpeg_quality', 90, 'wp_crop_image'))) { return $dst_file; } else { return false; } }
function wp_crop_image( $src_file, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) { if ( ctype_digit( $src_file ) ) // Handle int as attachment ID $src_file = get_attached_file( $src_file ); $src = wp_load_image( $src_file ); if ( !is_resource( $src )) return $src; $dst = imagecreatetruecolor( $dst_w, $dst_h ); if ( $src_abs ) { $src_w -= $src_x; $src_h -= $src_y; } if (function_exists('imageantialias')) imageantialias( $dst, true ); imagecopyresampled( $dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ); if ( !$dst_file ) $dst_file = str_replace( basename( $src_file ), 'cropped-'.basename( $src_file ), $src_file ); $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file ); if ( imagejpeg( $dst, $dst_file ) ) return $dst_file; else return false; }
/** * Method for testing if an image WOULD be resized * Simulates the validation that occurs prior to actually beginning the resize * process that would negate the need for or prevent the image from being resized. * * We use image_make_intermediate_size() to create our images * This method recreates that. See media.php * * @since 0.1.5 * @uses wp_load_image() WP function * @uses image_resize_dimensions() WP function */ public static function simulate_image_make_intermediate_size($file, $width, $height, $crop = false) { // Begin image_make_intermediate_size($file, $width, $height, $crop=false) if ($width || $height) { // Begin image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 ) $image = wp_load_image($file); if (!is_resource($image)) { return FALSE; } //return new WP_Error( 'error_loading_image', $image, $file ); $size = @getimagesize($file); if (!$size) { return FALSE; } //return new WP_Error('invalid_image', __('Could not read image size'), $file); list($orig_w, $orig_h, $orig_type) = $size; $dims = image_resize_dimensions($orig_w, $orig_h, $width, $height, $crop); // $max_w, $max_h if (!$dims) { return FALSE; } //return new WP_Error( 'error_getting_dimensions', __('Could not calculate resized image dimensions') ); list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims; } imagedestroy($image); // Free up memory // Return value of image_make_intermediate_size() return array('file' => basename($file), 'width' => $dst_w, 'height' => $dst_h); }
/** * Try loading a directory * * @ticket 17814 * @expectedDeprecated wp_load_image */ public function test_load_directory() { // First, test with deprecated wp_load_image function $editor1 = wp_load_image(DIR_TESTDATA); $this->assertNotInternalType('resource', $editor1); $editor2 = wp_get_image_editor(DIR_TESTDATA); $this->assertNotInternalType('resource', $editor2); // Then, test with editors. $classes = array('WP_Image_Editor_GD', 'WP_Image_Editor_Imagick'); foreach ($classes as $class) { // If the image editor isn't available, skip it if (!call_user_func(array($class, 'test'))) { continue; } $editor = new $class(DIR_TESTDATA); $loaded = $editor->load(); $this->assertInstanceOf('WP_Error', $loaded); $this->assertEquals('error_loading_image', $loaded->get_error_code()); } }
/** * Crop an Image to a given size. * Modified version of the function wp_crop_image located in * wp-admin/includes/image.php * * Mixes in some picture detection and treatment from image_resize in * wp-includes/media.php * * @param string|int $src_file The source file or Attachment ID. * @param int $src_x The start x position to crop from. * @param int $src_y The start y position to crop from. * @param int $src_w The width to crop. * @param int $src_h The height to crop. * @param int $dst_w The destination width. * @param int $dst_h The destination height. * @param int $src_abs Optional. If the source crop points are absolute. * @param string $dst_file Optional. The destination file to write to. * @return string|WP_Error|false New filepath on success, WP_Error or false on failure. */ function ifp_wp_crop_image($src_file, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false) { if (is_numeric($src_file)) { // Handle int as attachment ID $src_file = get_attached_file($src_file); } $src = wp_load_image($src_file); if (!is_resource($src)) { return new WP_Error('error_loading_image', $src, $src_file); } /* Part from image_resize */ $size = @getimagesize($src_file); if (!$size) { return new WP_Error('invalid_image', __('Could not read image size'), $file); } list($orig_w, $orig_h, $orig_type) = $size; /* End part from image_resize */ $dst = wp_imagecreatetruecolor($dst_w, $dst_h); if ($src_abs) { $src_w -= $src_x; $src_h -= $src_y; } imagecopyresampled($dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); /* Part from image_resize */ // convert from full colors to index colors, like original PNG. if (IMAGETYPE_PNG == $orig_type && function_exists('imageistruecolor') && !imageistruecolor($src)) { imagetruecolortopalette($dst, false, imagecolorstotal($src)); } /* End part from image_resize */ imagedestroy($src); // Free up memory if (!$dst_file) { $dst_file = str_replace(basename($src_file), 'cropped-' . basename($src_file), $src_file); } $info_src = pathinfo($src_file); $info_dst = pathinfo($dst_file); $dir = $info_dst['dirname']; $ext = $info_src['extension']; // Keep the source extension $name = wp_basename($dst_file, ".{$info_dst['extension']}"); $dst_file = "{$dir}/{$name}.{$ext}"; if (IMAGETYPE_GIF == $orig_type) { $success = imagegif($dst, $dst_file); } else { if (IMAGETYPE_PNG == $orig_type) { $success = imagepng($dst, $dst_file); } else { $dst_file = "{$dir}/{$name}.jpg"; $success = imagejpeg($dst, $dst_file, apply_filters('jpeg_quality', 90, 'wp_crop_image')); } } imagedestroy($dst); if ($success) { /* Part from image_resize */ // Set correct file permissions $stat = stat(dirname($dst_file)); $perms = $stat['mode'] & 0666; //same permissions as parent folder, strip off the executable bits @chmod($dst_file, $perms); /* End part from image_resize */ return $dst_file; } else { return false; } }
/** * Copy from wp-includes/media.php * Scale down an image to fit a particular size and save a new copy of the image. * * The PNG transparency will be preserved using the function, as well as the * image type. If the file going in is PNG, then the resized image is going to * be PNG. The only supported image types are PNG, GIF, and JPEG. * * Some functionality requires API to exist, so some PHP version may lose out * support. This is not the fault of WordPress (where functionality is * downgraded, not actual defects), but of your PHP version. * * @since 2.5.0 * * @param string $file Image file path. * @param int $max_w Maximum width to resize to. * @param int $max_h Maximum height to resize to. * @param bool $crop Optional. Whether to crop image or resize. * @param string $suffix Optional. File suffix. * @param string $dest_path Optional. New image file path. * @param int $jpeg_quality Optional, default is 90. Image quality percentage. * @return mixed WP_Error on failure. String with new destination path. */ function wpcf_image_resize($file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90) { $image = wp_load_image($file); if (!is_resource($image)) { return new WP_Error('error_loading_image', $image, $file); } $size = @getimagesize($file); if (!$size) { return new WP_Error('invalid_image', __('Could not read image size', 'wpcf'), $file); } list($orig_w, $orig_h, $orig_type) = $size; $dims = image_resize_dimensions($orig_w, $orig_h, $max_w, $max_h, $crop); if (!$dims) { return new WP_Error('error_getting_dimensions', __('Could not calculate resized image dimensions', 'wpcf')); } list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims; $newimage = wp_imagecreatetruecolor($dst_w, $dst_h); imagecopyresampled($newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); // convert from full colors to index colors, like original PNG. if (IMAGETYPE_PNG == $orig_type && function_exists('imageistruecolor') && !imageistruecolor($image)) { imagetruecolortopalette($newimage, false, imagecolorstotal($image)); } // we don't need the original in memory anymore imagedestroy($image); // $suffix will be appended to the destination filename, just before the extension if (!$suffix) { $suffix = "{$dst_w}x{$dst_h}"; } $info = pathinfo($file); $dir = $info['dirname']; $ext = $info['extension']; $name = wpcf_basename($file, ".{$ext}"); // use fix here for windows if (!is_null($dest_path) and $_dest_path = realpath($dest_path)) { $dir = $_dest_path; } $destfilename = "{$dir}/{$name}-{$suffix}.{$ext}"; if (IMAGETYPE_GIF == $orig_type) { if (!imagegif($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid', 'wpcf')); } } elseif (IMAGETYPE_PNG == $orig_type) { if (!imagepng($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid', 'wpcf')); } } else { // all other formats are converted to jpg if ('jpg' != $ext && 'jpeg' != $ext) { $destfilename = "{$dir}/{$name}-{$suffix}.jpg"; } if (!imagejpeg($newimage, $destfilename, apply_filters('jpeg_quality', $jpeg_quality, 'image_resize'))) { return new WP_Error('resize_path_invalid', __('Resize path invalid', 'wpcf')); } } imagedestroy($newimage); // Set correct file permissions $stat = stat(dirname($destfilename)); $perms = $stat['mode'] & 0666; //same permissions as parent folder, strip off the executable bits @chmod($destfilename, $perms); return $destfilename; }
function pte_resize_images() { $logger = PteLogger::singleton(); global $pte_sizes; // Require JSON output pte_require_json(); $id = pte_check_id($_GET['id']); $w = pte_check_int($_GET['w']); $h = pte_check_int($_GET['h']); $x = pte_check_int($_GET['x']); $y = pte_check_int($_GET['y']); if ($id === false || $w === false || $h === false || $x === false || $y === false) { return pte_json_error("ResizeImages initialization failed: '{$id}-{$w}-{$h}-{$x}-{$y}'"); } // Get the sizes to process $pte_sizes = $_GET['pte-sizes']; $sizes = pte_get_all_alternate_size_information($id); // The following information is common to all sizes // *** common-info $dst_x = 0; $dst_y = 0; $original_file = get_attached_file($id); $original_image = wp_load_image($original_file); $original_size = @getimagesize($original_file); $uploads = wp_upload_dir(); $PTE_TMP_DIR = $uploads['basedir'] . DIRECTORY_SEPARATOR . "ptetmp" . DIRECTORY_SEPARATOR; $PTE_TMP_URL = $uploads['baseurl'] . "/ptetmp/"; if (!$original_size) { return pte_json_error("Could not read image size"); } $logger->debug("BASE FILE DIMENSIONS/INFO: " . print_r($original_size, true)); list($orig_w, $orig_h, $orig_type) = $original_size; // *** End common-info foreach ($sizes as $size => $data) { // Get all the data needed to run image_create // // $dst_w, $dst_h extract(pte_get_width_height($data, $w, $h)); // // Set the directory $basename = pte_generate_filename($original_file, $dst_w, $dst_h); // Set the file and URL's - defines set in pte_ajax $tmpfile = "{$PTE_TMP_DIR}{$id}" . DIRECTORY_SEPARATOR . "{$basename}"; $tmpurl = "{$PTE_TMP_URL}{$id}/{$basename}"; // === CREATE IMAGE =================== $image = pte_create_image($original_image, $orig_type, $dst_x, $dst_y, $dst_w, $dst_h, $x, $y, $w, $h); if (!isset($image)) { $logger->error("Error creating image: {$size}"); continue; } if (!pte_write_image($image, $orig_type, $tmpfile)) { $logger->error("Error writing image: {$size} to '{$tmpfile}'"); continue; } // === END CREATE IMAGE =============== // URL: wp_upload_dir => base_url/subdir + /basename of $tmpfile // This is for the output $thumbnails[$size]['url'] = $tmpurl; $thumbnails[$size]['file'] = basename($tmpfile); } // we don't need the original in memory anymore imagedestroy($original_image); // Did you process anything? if (count($thumbnails) < 1) { return pte_json_error("No images processed"); } return pte_json_encode(array('thumbnails' => $thumbnails, 'pte-nonce' => wp_create_nonce("pte-{$id}"), 'pte-delete-nonce' => wp_create_nonce("pte-delete-{$id}"))); }
/** * Catch the file upload and parse it * * @since 0.1 * * @param int $post_id * @return string The filepath */ public static function catch_upload($post_id) { if (!wp_attachment_is_image($post_id)) { return; } // Get default options for Large Size Media and options $max_width = (int) get_option('large_size_w', 1024); $max_height = (int) get_option('large_size_h', 1024); $crop = (bool) get_option('media_features_crop', false); $resizes = (bool) get_option('media_features_resize', false); // If option is not enabled return if (!$resizes) { return; } // Let's see if these sizes are reasonable if ($max_width < 0 || $max_height < 0) { return; } // Get file and image GD resource $file = get_attached_file($post_id); $image = wp_load_image($file); if (!is_resource($image)) { return new WP_Error('error_loading_image', $image, $file); } // Get real dimensions from file image list($orig_width, $orig_height, $orig_type) = @getimagesize($file); // if the image needs to be cropped, resize it if ($max_width >= $orig_width && $max_height >= $orig_height) { return; } //var_dump( $file, $orig_width, $orig_height, $orig_type, $max_width, $max_height ); $dims = image_resize_dimensions($orig_width, $orig_height, $max_width, $max_height, $crop); if (!$dims) { return new WP_Error('error_getting_dimensions', __('Could not calculate resized image dimensions', 'media-features')); } list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims; $newimage = wp_imagecreatetruecolor($dst_w, $dst_h); imagecopyresampled($newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); // convert from full colors to index colors, like original PNG. if (IMAGETYPE_PNG == $orig_type && function_exists('imageistruecolor') && !imageistruecolor($image)) { imagetruecolortopalette($newimage, false, imagecolorstotal($image)); } // we don't need the original in memory anymore imagedestroy($image); extract(pathinfo($file)); $name = wp_basename($file, ".{$extension}"); //var_dump( $name, $dirname, $extension ); $dirname = realpath($dirname); $dest_file = "{$dirname}/{$name}.{$extension}"; // If the file is not writable should not proceed if (!is_writeable($dest_file)) { return; } // Save to file based on original type $did_save = false; switch ($orig_type) { case IMAGETYPE_GIF: imagegif($newimage, $dest_file); break; case IMAGETYPE_PNG: imagepng($newimage, $dest_file); break; case IMAGETYPE_JPEG: case IMAGETYPE_JPEG2000: imagejpeg($newimage, $dest_file, apply_filters('jpeg_quality', 90, 'image_resize')); break; default: $dest_file = "{$dirname}/{$name}.{$extension}"; } imagedestroy($newimage); // Set correct file permissions $stat = stat(dirname($dest_file)); $perms = $stat['mode'] & 0666; //same permissions as parent folder, strip off the executable bits @chmod($dest_file, $perms); return $dest_file; }
function ocmx_custom_resize($file, $max_w = 0, $max_h = 0, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 100) { $image = wp_load_image($file); if (!is_resource($image)) { return new WP_Error('error_loading_image', $image, $file); } $size = @getimagesize($file); if (!$size) { return new WP_Error('invalid_image', __('Could not read image size'), $file); } list($orig_w, $orig_h, $orig_type) = $size; if ($max_h == 0) { $max_h = $orig_h; } if ($max_w == 0) { $max_w = $orig_w; } if ($orig_w > $max_w || $orig_h > $max_h) { $dims = image_resize_dimensions($orig_w, $orig_h, $max_w, $max_h, $crop); } if (!$dims) { $info = pathinfo($file); $dir = $info['dirname']; $ext = $info['extension']; $name = basename($file, ".{$ext}"); if (!is_null($dest_path) and $_dest_path = realpath($dest_path)) { $dir = $_dest_path; } if (strpos($dest_path, "ocmx") !== false) { copy($file, "{$dir}/{$name}.{$ext}"); } } else { list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims; $newimage = wp_imagecreatetruecolor($dst_w, $dst_h); imagecopyresampled($newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); // convert from full colors to index colors, like original PNG. if (IMAGETYPE_PNG == $orig_type && function_exists('imageistruecolor') && !imageistruecolor($image)) { imagetruecolortopalette($newimage, false, imagecolorstotal($image)); } // we don't need the original in memory anymore imagedestroy($image); $info = pathinfo($file); $dir = $info['dirname']; $ext = $info['extension']; $name = basename($file, ".{$ext}"); if (!is_null($dest_path) and $_dest_path = realpath($dest_path)) { $dir = $_dest_path; } $destfilename = "{$dir}/{$name}.{$ext}"; if (IMAGETYPE_GIF == $orig_type) { if (!imagegif($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } elseif (IMAGETYPE_PNG == $orig_type) { if (!imagepng($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } else { // all other formats are converted to jpg $destfilename = "{$dir}/{$name}.jpg"; if (!imagejpeg($newimage, $destfilename, apply_filters('jpeg_quality', $jpeg_quality, 'image_resize'))) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } imagedestroy($newimage); // Set correct file permissions $stat = stat(dirname($destfilename)); $perms = $stat['mode'] & 0666; //same permissions as parent folder, strip off the executable bits @chmod($destfilename, $perms); } return $destfilename; }
/** * Sharpen resized JPG's so they don't get blurry */ function boilerstrap_sharpen_resized_files($resized_file) { $image = wp_load_image($resized_file); if (!is_resource($image)) { return new WP_Error('error_loading_image', $image, $file); } $size = @getimagesize($resized_file); if (!$size) { return new WP_Error('invalid_image', __('Could not read image size'), $file); } list($orig_w, $orig_h, $orig_type) = $size; switch ($orig_type) { case IMAGETYPE_JPEG: $matrix = array(array(-1, -1, -1), array(-1, 16, -1), array(-1, -1, -1)); $divisor = array_sum(array_map('array_sum', $matrix)); $offset = 0; imageconvolution($image, $matrix, $divisor, $offset); imagejpeg($image, $resized_file, apply_filters('jpeg_quality', 90, 'edit_image')); break; case IMAGETYPE_PNG: return $resized_file; case IMAGETYPE_GIF: return $resized_file; } return $resized_file; }
public static function resize_image($file, $max_w = 0, $max_h = 0, $crop = true, $suffix = null, $dest_path = null, $jpeg_quality = 90) { it_classes_load('it-file-utility.php'); if (is_numeric($file)) { $file_info = ITFileUtility::get_file_attachment($file); if (false === $file_info) { return new WP_Error('error_loading_image_attachment', "Could not find requested file attachment ({$file})"); } $file = $file_info['file']; } else { $file_attachment_id = ''; } if (preg_match('/\\.ico$/', $file)) { return array('file' => $file, 'url' => ITFileUtility::get_url_from_file($file), 'name' => basename($file)); } if (version_compare($GLOBALS['wp_version'], '3.4.9', '>')) { // Compat code taken from pre-release 3.5.0 code. if (!file_exists($file)) { return new WP_Error('error_loading_image', sprintf(__('File “%s” doesn’t exist?'), $file)); } if (!function_exists('imagecreatefromstring')) { return new WP_Error('error_loading_image', __('The GD image library is not installed.')); } // Set artificially high because GD uses uncompressed images in memory @ini_set('memory_limit', apply_filters('image_memory_limit', WP_MAX_MEMORY_LIMIT)); $image = imagecreatefromstring(file_get_contents($file)); if (!is_resource($image)) { return new WP_Error('error_loading_image', sprintf(__('File “%s” is not an image.'), $file)); } } else { require_once ABSPATH . 'wp-admin/includes/image.php'; $image = wp_load_image($file); if (!is_resource($image)) { return new WP_Error('error_loading_image', $image); } } list($orig_w, $orig_h, $orig_type) = getimagesize($file); $dims = ITImageUtility::_image_resize_dimensions($orig_w, $orig_h, $max_w, $max_h, $crop); if (!$dims) { return new WP_Error('error_resizing_image', "Could not resize image"); } list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims; if ($orig_w == $dst_w && $orig_h == $dst_h) { return array('file' => $file, 'url' => ITFileUtility::get_url_from_file($file), 'name' => basename($file)); } if (!$suffix) { $suffix = "resized-image-{$dst_w}x{$dst_h}"; } $info = pathinfo($file); $dir = $info['dirname']; $ext = $info['extension']; $name = basename($file, ".{$ext}"); if (!is_null($dest_path) && ($_dest_path = realpath($dest_path))) { $dir = $_dest_path; } $destfilename = "{$dir}/{$name}-{$suffix}.{$ext}"; if (file_exists($destfilename)) { if (filemtime($file) > filemtime($destfilename)) { unlink($destfilename); } else { return array('file' => $destfilename, 'url' => ITFileUtility::get_url_from_file($destfilename), 'name' => basename($destfilename)); } } // ImageMagick cannot resize animated PNG files yet, so this only works for // animated GIF files. $animated = false; if (ITImageUtility::is_animated_gif($file)) { $coalescefilename = "{$dir}/{$name}-coalesced-file.{$ext}"; if (!file_exists($coalescefilename)) { system("convert {$file} -coalesce {$coalescefilename}"); } if (file_exists($coalescefilename)) { system("convert -crop {$src_w}x{$src_h}+{$src_x}+{$src_y}! {$coalescefilename} {$destfilename}"); if (file_exists($destfilename)) { system("mogrify -resize {$dst_w}x{$dst_h} {$destfilename}"); system("convert -layers optimize {$destfilename}"); $animated = true; } } } if (!$animated) { $newimage = imagecreatetruecolor($dst_w, $dst_h); // preserve PNG transparency if (IMAGETYPE_PNG == $orig_type && function_exists('imagealphablending') && function_exists('imagesavealpha')) { imagealphablending($newimage, false); imagesavealpha($newimage, true); } imagecopyresampled($newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); // we don't need the original in memory anymore if ($orig_type == IMAGETYPE_GIF) { if (!imagegif($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } elseif ($orig_type == IMAGETYPE_PNG) { if (!imagepng($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } else { // all other formats are converted to jpg $destfilename = "{$dir}/{$name}-{$suffix}.jpg"; if (!imagejpeg($newimage, $destfilename, apply_filters('jpeg_quality', $jpeg_quality))) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } imagedestroy($newimage); } imagedestroy($image); // Set correct file permissions $stat = stat(dirname($destfilename)); $perms = $stat['mode'] & 0666; //same permissions as parent folder, strip off the executable bits @chmod($destfilename, $perms); return array('file' => $destfilename, 'url' => ITFileUtility::get_url_from_file($destfilename), 'name' => basename($destfilename)); }
function _dp_resize_logo() { $dp_resize_message = array('error' => true, 'message' => ''); //値をチェック $ratio = intval($_REQUEST['dp_resize_ratio']); if (!($ratio > 0 && $ratio <= 100)) { $ratio = 100; } $orignal_to_display_ratio = (double) $_REQUEST['dp_logo_to_resize_ratio']; $width = round($_REQUEST['dp_logo_resize_width'] / $orignal_to_display_ratio); $height = round($_REQUEST['dp_logo_resize_height'] / $orignal_to_display_ratio); $top = round($_REQUEST['dp_logo_resize_top'] / $orignal_to_display_ratio); $left = round($_REQUEST['dp_logo_resize_left'] / $orignal_to_display_ratio); $new_width = round($width * $ratio / 100); $new_height = round($height * $ratio / 100); //画像を読み込んでみる $info = dp_logo_info(); if (!$info) { $dp_resize_message['message'] = __('Logo file not exists.', 'tcd-w'); return $dp_resize_message; } // 保存ファイル名を決める $path = preg_replace("/logo\\.(png|gif|jpe?g)\$/i", "logo-resized.\$1", $info['path']); // 3.5以前と以降で処理を分岐 try { // 3.5以降はwp_get_image_editorが存在する if (function_exists('wp_get_image_editor')) { // 新APIを利用 $orig_image = wp_get_image_editor($info['path']); // 読み込み失敗ならエラー if (is_wp_error($orig_image)) { throw new Exception(__('Logo file not exists.', 'tcd-w')); } // リサイズしてダメだったらエラー $size = $orig_image->get_size(); $resize_result = $orig_image->resize(round($size['width'] * $ratio / 100), round($size['height'] * $ratio / 100)); if (is_wp_error($resize_result)) { // WordPressが返すエラーメッセージを利用 // 適宜変更してください。 throw new Exception($resize_result->get_error_message()); } // 切り抜きしてダメだったらエラー $crop_result = $orig_image->crop(round($left * $ratio / 100), round($top * $ratio / 100), $new_width, $new_height); if (is_wp_error($crop_result)) { // WordPressが返すエラーメッセージを利用 // 適宜変更してください。 throw new Exception($crop_result->get_error_message()); } // 保存してダメだったらエラー // 基本は上書きOK. $save_result = $orig_image->save($path); if (is_wp_error($save_result)) { // WordPressが返すエラーメッセージを利用 // 適宜変更してください。 throw new Exception($save_result->get_error_message()); } } else { // それ以前は昔の方法で行う $orig_image = wp_load_image($info['path']); // 画像を読み込めなかったらエラー if (!is_resource($orig_image)) { throw new Exception(__('Logo file not exists.', 'tcd-w')); } $newimage = wp_imagecreatetruecolor($new_width, $new_height); imagecopyresampled($newimage, $orig_image, 0, 0, $left, $top, $new_width, $new_height, $width, $height); if (IMAGETYPE_PNG == $info['mime'] && function_exists('imageistruecolor')) { @imagetruecolortopalette($newimage, false, imagecolorstotal($orig_image)); } imagedestroy($orig_image); //ファイルを保存する前に削除 $dest_path = dp_logo_exists(true); if ($dest_path && !@unlink($dest_path)) { throw new Exception('Cannot delete existing resized logo.', 'tcd-w'); } //名前を決めて保存 $result = null; if (IMAGETYPE_GIF == $info['mime']) { $result = imagegif($newimage, $path); } elseif (IMAGETYPE_PNG == $info['mime']) { $result = imagepng($newimage, $path); } else { $result = imagejpeg($newimage, $path, 100); } imagedestroy($newimage); if (!$result) { throw new Exception(sprintf(__('Failed to save resized logo. Please check permission of <code>%s</code>', 'tcd-w'), dp_logo_basedir())); } } } catch (Exception $e) { // 上記処理中で一回でも例外が発生したら、エラーを返す $dp_resize_message['message'] = $e->getMessage(); return $dp_resize_message; } // ここまで来たということはエラーなし $dp_resize_message['error'] = false; $dp_resize_message['message'] = __('Logo image is successfully resized.', 'tcd-w'); return $dp_resize_message; }
function image_upsize($file, $max_w, $max_h, $color = null, $suffix = null, $dest_path = null, $jpeg_quality = 90) { $image = wp_load_image($file); if (!is_resource($image)) { return new WP_Error('error_loading_image', $image, $file); } $size = @getimagesize($file); if (!$size) { return new WP_Error('invalid_image', __('Could not read image size'), $file); } list($orig_w, $orig_h, $orig_type) = $size; $dst_x = (int) ($max_w / 2) - $orig_w / 2; $dst_y = (int) ($max_h / 2) - $orig_h / 2; $src_x = 0; $src_y = 0; $dst_w = $max_w; $dst_h = $max_h; $src_w = $orig_w; $src_h = $orig_h; $newimage = wp_imagecreatetruecolor($dst_w, $dst_h); if (!empty($color)) { $r = base_convert(substr($color, 0, 2), 16, 10); $g = base_convert(substr($color, 2, 2), 16, 10); $b = base_convert(substr($color, 4, 2), 16, 10); $background = imagecolorallocate($newimage, $r, $g, $b); imagefill($newimage, 0, 0, $background); } imagecopyresampled($newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $src_w, $src_h); // Convert from full colors to index colors, like original PNG. if (IMAGETYPE_PNG == $orig_type && function_exists('imageistruecolor') && !imageistruecolor($image)) { imagetruecolortopalette($newimage, false, imagecolorstotal($image)); } // We don't need the original in memory anymore. imagedestroy($image); // $suffix will be appended to the destination filename, just before the extension. if (!$suffix) { $suffix = "{$dst_w}x{$dst_h}"; } $info = pathinfo($file); $dir = $info['dirname']; $ext = $info['extension']; $name = basename($file, ".{$ext}"); if (!is_null($dest_path) && ($_dest_path = realpath($dest_path))) { $dir = $_dest_path; } $destfilename = "{$dir}/{$name}-{$suffix}.{$ext}"; if (IMAGETYPE_GIF == $orig_type) { if (!imagegif($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } elseif (IMAGETYPE_PNG == $orig_type) { if (!imagepng($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } else { // All other formats are converted to jpg. $destfilename = "{$dir}/{$name}-{$suffix}.jpg"; if (!imagejpeg($newimage, $destfilename, apply_filters('jpeg_quality', $jpeg_quality, 'image_resize'))) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } imagedestroy($newimage); // Set correct file permissions. $stat = stat(dirname($destfilename)); $perms = $stat['mode'] & 0666; // Same permissions as parent folder, strip off the executable bits. @chmod($destfilename, $perms); // Delete old image. unlink($file); return $destfilename; }
/** * Scale down an image to fit a particular size and save a new copy of the image. * * The PNG transparency will be preserved using the function, as well as the * image type. If the file going in is PNG, then the resized image is going to * be PNG. The only supported image types are PNG, GIF, and JPEG. * * Some functionality requires API to exist, so some PHP version may lose out * support. This is not the fault of WordPress (where functionality is * downgraded, not actual defects), but of your PHP version. * * @since 2.5.0 * * @param string $file Image file path. * @param int $max_w Maximum width to resize to. * @param int $max_h Maximum height to resize to. * @param bool $crop Optional. Whether to crop image or resize. * @param string $suffix Optional. File Suffix. * @param string $dest_path Optional. New image file path. * @param int $jpeg_quality Optional, default is 90. Image quality percentage. * @return mixed WP_Error on failure. String with new destination path. Array of dimensions from {@link image_resize_dimensions()} */ function image_resize($file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90) { $image = wp_load_image($file); if (!is_resource($image)) { return new WP_Error('error_loading_image', $image); } list($orig_w, $orig_h, $orig_type) = getimagesize($file); $dims = image_resize_dimensions($orig_w, $orig_h, $max_w, $max_h, $crop); if (!$dims) { return $dims; } list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $dims; $newimage = imagecreatetruecolor($dst_w, $dst_h); // preserve PNG transparency if (IMAGETYPE_PNG == $orig_type && function_exists('imagealphablending') && function_exists('imagesavealpha')) { imagealphablending($newimage, false); imagesavealpha($newimage, true); } imagecopyresampled($newimage, $image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); // we don't need the original in memory anymore imagedestroy($image); // $suffix will be appended to the destination filename, just before the extension if (!$suffix) { $suffix = "{$dst_w}x{$dst_h}"; } $info = pathinfo($file); $dir = $info['dirname']; $ext = $info['extension']; $name = basename($file, ".{$ext}"); if (!is_null($dest_path) and $_dest_path = realpath($dest_path)) { $dir = $_dest_path; } $destfilename = "{$dir}/{$name}-{$suffix}.{$ext}"; if ($orig_type == IMAGETYPE_GIF) { if (!imagegif($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } elseif ($orig_type == IMAGETYPE_PNG) { if (!imagepng($newimage, $destfilename)) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } else { // all other formats are converted to jpg $destfilename = "{$dir}/{$name}-{$suffix}.jpg"; if (!imagejpeg($newimage, $destfilename, apply_filters('jpeg_quality', $jpeg_quality, 'image_resize'))) { return new WP_Error('resize_path_invalid', __('Resize path invalid')); } } imagedestroy($newimage); // Set correct file permissions $stat = stat(dirname($destfilename)); $perms = $stat['mode'] & 0666; //same permissions as parent folder, strip off the executable bits @chmod($destfilename, $perms); return $destfilename; }
/** * Create grayscale version of image * uses wp_load_image(); * * @param $path - path of original image * @param $url - url of original image * * @return grayscale image version url */ function wip_print_grayscale_autoresize($path, $url) { if (file_exists($path)) { $file_info = pathinfo($path); $extension = '.' . $file_info['extension']; $nameAndExt = $file_info['filename'] . '.' . $file_info['extension']; // the image path without the extension $no_ext_path = $file_info['dirname'] . '/' . $file_info['filename']; $newnameAndExt = $file_info['filename'] . '-grayscale' . $extension; $grayscale_img_path = $no_ext_path . '-grayscale' . $extension; if (!file_exists($grayscale_img_path)) { list($orig_w, $orig_h, $orig_type) = @getimagesize($path); $image = wp_load_image($path); imagefilter($image, IMG_FILTER_GRAYSCALE); switch ($orig_type) { case IMAGETYPE_GIF: imagegif($image, $grayscale_img_path); break; case IMAGETYPE_PNG: imagepng($image, $grayscale_img_path); break; case IMAGETYPE_JPEG: imagejpeg($image, $grayscale_img_path); break; } imagedestroy($image); } $toReturn = str_replace($nameAndExt, $newnameAndExt, $url); return $toReturn; } return false; }
function uw_image_resize($url, $width = NULL, $height = NULL, $crop = true, $retina = false) { global $wpdb; if (empty($url)) { return new WP_Error('no_image_url', __('No image URL has been entered.', 'wta'), $url); } // Bail if GD Library doesn't exist if (!extension_loaded('gd') || !function_exists('gd_info')) { return array('url' => $url, 'width' => $width, 'height' => $height); } // Get default size from database $width = $width ? $width : get_option('thumbnail_size_w'); $height = $height ? $height : get_option('thumbnail_size_h'); // Allow for different retina sizes $retina = $retina ? $retina === true ? 2 : $retina : 1; // Destination width and height variables $dest_width = $width * $retina; $dest_height = $height * $retina; // Get image file path $file_path = parse_url($url); $file_path = $_SERVER['DOCUMENT_ROOT'] . $file_path['path']; // Check for Multisite if (is_multisite()) { global $blog_id; $blog_details = get_blog_details($blog_id); $file_path = str_replace($blog_details->path . 'files/', '/wp-content/blogs.dir/' . $blog_id . '/files/', $file_path); } // Some additional info about the image $info = pathinfo($file_path); $dir = $info['dirname']; $ext = $info['extension']; $name = wp_basename($file_path, ".{$ext}"); if ('bmp' == $ext) { return new WP_Error('bmp_mime_type', __('Image is BMP. Please use either JPG or PNG.', 'wta'), $url); } // Suffix applied to filename $suffix = "{$dest_width}x{$dest_height}"; // Get the destination file name $dest_file_name = "{$dir}/{$name}-{$suffix}.{$ext}"; // No need to resize & create a new image if it already exists! if (!file_exists($dest_file_name)) { /* * Bail if this image isn't in the Media Library either. * We only want to resize Media Library images, so we can be sure they get deleted correctly when appropriate. */ $query = $wpdb->prepare("SELECT * FROM {$wpdb->posts} WHERE guid='%s'", $url); $get_attachment = $wpdb->get_results($query); if (!$get_attachment) { return array('url' => $url, 'width' => $width, 'height' => $height); } $image = wp_load_image($file_path); if (!is_resource($image)) { return new WP_Error('error_loading_image_as_resource', $image, $file_path); } // Get the current image dimensions and type $size = @getimagesize($file_path); if (!$size) { return new WP_Error('file_path_getimagesize_failed', __('Failed to get $file_path information using "@getimagesize".', 'wta'), $file_path); } list($orig_width, $orig_height, $orig_type) = $size; // Create new image $new_image = wp_imagecreatetruecolor($dest_width, $dest_height); // Do some proportional cropping if enabled if ($crop) { $src_x = $src_y = 0; $src_w = $orig_width; $src_h = $orig_height; $cmp_x = $orig_width / $dest_width; $cmp_y = $orig_height / $dest_height; // Calculate x or y coordinate, and width or height of source if ($cmp_x > $cmp_y) { $src_w = round($orig_width / $cmp_x * $cmp_y); $src_x = round(($orig_width - $orig_width / $cmp_x * $cmp_y) / 2); } else { if ($cmp_y > $cmp_x) { $src_h = round($orig_height / $cmp_y * $cmp_x); $src_y = round(($orig_height - $orig_height / $cmp_y * $cmp_x) / 2); } } // Create the resampled image imagecopyresampled($new_image, $image, 0, 0, $src_x, $src_y, $dest_width, $dest_height, $src_w, $src_h); } else { imagecopyresampled($new_image, $image, 0, 0, 0, 0, $dest_width, $dest_height, $orig_width, $orig_height); } // Convert from full colors to index colors, like original PNG. if (IMAGETYPE_PNG == $orig_type && function_exists('imageistruecolor') && !imageistruecolor($image)) { imagetruecolortopalette($new_image, false, imagecolorstotal($image)); } // Remove the original image from memory (no longer needed) imagedestroy($image); // Check the image is the correct file type if (IMAGETYPE_GIF == $orig_type) { if (!imagegif($new_image, $dest_file_name)) { return new WP_Error('resize_path_invalid', __('Resize path invalid (GIF)', 'wta')); } } elseif (IMAGETYPE_PNG == $orig_type) { if (!imagepng($new_image, $dest_file_name)) { return new WP_Error('resize_path_invalid', __('Resize path invalid (PNG).', 'wta')); } } else { // All other formats are converted to jpg if ('jpg' != $ext && 'jpeg' != $ext) { $dest_file_name = "{$dir}/{$name}-{$suffix}.jpg"; } if (!imagejpeg($new_image, $dest_file_name, apply_filters('resize_jpeg_quality', 90))) { return new WP_Error('resize_path_invalid', __('Resize path invalid (JPG).', 'wta')); } } // Remove new image from memory (no longer needed as well) imagedestroy($new_image); // Set correct file permissions $stat = stat(dirname($dest_file_name)); $perms = $stat['mode'] & 0666; @chmod($dest_file_name, $perms); // Get some information about the resized image $new_size = @getimagesize($dest_file_name); if (!$new_size) { return new WP_Error('resize_path_getimagesize_failed', __('Failed to get $dest_file_name (resized image) info via @getimagesize', 'wta'), $dest_file_name); } list($resized_width, $resized_height, $resized_type) = $new_size; // Get the new image URL $resized_url = str_replace(basename($url), basename($dest_file_name), $url); // Add the resized dimensions to original image metadata (so we can delete our resized images when the original image is delete from the Media Library) $metadata = wp_get_attachment_metadata($get_attachment[0]->ID); if (isset($metadata['image_meta'])) { $metadata['image_meta']['resized_images'][] = $resized_width . 'x' . $resized_height; wp_update_attachment_metadata($get_attachment[0]->ID, $metadata); } // Return array with resized image information $image_array = array('url' => $resized_url, 'width' => $resized_width, 'height' => $resized_height, 'type' => $resized_type); } else { $image_array = array('url' => str_replace(basename($url), basename($dest_file_name), $url), 'width' => $dest_width, 'height' => $dest_height, 'type' => $ext); } return $image_array; }
function _dp_resize_logo() { $dp_resize_message = array('error' => true, 'message' => ''); //値をチェック $ratio = intval($_REQUEST['dp_resize_ratio']); if (!($ratio > 0 && $ratio <= 100)) { $ratio = 100; } $orignal_to_display_ratio = (double) $_REQUEST['dp_logo_to_resize_ratio']; $width = round($_REQUEST['dp_logo_resize_width'] / $orignal_to_display_ratio); $height = round($_REQUEST['dp_logo_resize_height'] / $orignal_to_display_ratio); $top = round($_REQUEST['dp_logo_resize_top'] / $orignal_to_display_ratio); $left = round($_REQUEST['dp_logo_resize_left'] / $orignal_to_display_ratio); //画像を読み込んでみる $info = dp_logo_info(); if (!$info) { $dp_resize_message['message'] = __('Logo file not exists.', 'tcd-w'); return $dp_resize_message; } $orig_image = wp_load_image($info['path']); if (!is_resource($orig_image)) { $dp_resize_message['message'] = __('Logo file not exists.', 'tcd-w'); return $dp_resize_message; } $new_width = round($width * $ratio / 100); $new_height = round($height * $ratio / 100); $newimage = wp_imagecreatetruecolor($new_width, $new_height); imagecopyresampled($newimage, $orig_image, 0, 0, $left, $top, $new_width, $new_height, $width, $height); if (IMAGETYPE_PNG == $info['mime'] && function_exists('imageistruecolor')) { @imagetruecolortopalette($newimage, false, imagecolorstotal($orig_image)); } imagedestroy($orig_image); //ファイルを保存する前に削除 $dest_path = dp_logo_exists(true); if ($dest_path && !@unlink($dest_path)) { $dp_resize_message['message'] = __('Cannot delete existing resized logo.', 'tcd-w'); return $dp_resize_message; } //名前を決めて保存 $path = preg_replace("/logo\\.(png|gif|jpe?g)\$/i", "logo-resized.\$1", $info['path']); $result = null; if (IMAGETYPE_GIF == $info['mime']) { $result = imagegif($newimage, $path); } elseif (IMAGETYPE_PNG == $info['mime']) { $result = imagepng($newimage, $path); } else { $result = imagejpeg($newimage, $path, 100); } imagedestroy($newimage); if ($result) { $dp_resize_message['error'] = false; $dp_resize_message['message'] = __('Logo image is successfully resized.', 'tcd-w'); } else { $dp_resize_message['message'] = sprintf(__('Failed to save resized logo. Please check permission of <code>%s</code>', 'tcd-w'), dp_logo_basedir()); } return $dp_resize_message; }