WordPress.org

Make WordPress Core

Ticket #3605: wp_thumbnail_create.diff

File wp_thumbnail_create.diff, 6.8 KB (added by BjornW, 7 years ago)

diff between 2.1 trunk and my proposal

  • wp-admin/admin-functions.php

     
    20902090        return apply_filters( 'wp_generate_attachment_metadata', $metadata ); 
    20912091} 
    20922092 
    2093 function wp_create_thumbnail( $file, $max_side, $effect = '' ) { 
     2093function wp_create_thumbnail($file, $w = 150, $h = null, $effect = '') { 
     2094    // 1 = GIF, 2 = JPEG, 3 = PNG 
     2095    if (file_exists($file)) { 
     2096        $type = getimagesize($file); 
    20942097 
    2095                 // 1 = GIF, 2 = JPEG, 3 = PNG 
     2098        // if the associated function doesn't exist - then it's not 
     2099        // handle. duh. i hope. 
    20962100 
    2097         if ( file_exists( $file ) ) { 
    2098                 $type = getimagesize( $file ); 
     2101        if (!function_exists('imagegif') && $type[2] == 1) { 
     2102            return $error = array('error' =>__('Filetype: gif not supported. Thumbnail not created.')); 
     2103        } 
     2104        elseif (!function_exists('imagejpeg') && $type[2] == 2) { 
     2105            return $error = array('error' =>__('Filetype: jpg not supported. Thumbnail not created.')); 
     2106        } 
     2107        elseif (!function_exists('imagepng') && $type[2] == 3) { 
     2108            return $error = array('error' =>__('Filetype: png not supported. Thumbnail not created.')); 
     2109        } else { 
     2110            // create the initial copy from the original file 
     2111            if ($type[2] == 1) { 
     2112                $image = imagecreatefromgif($file); 
     2113            } 
     2114            elseif ($type[2] == 2) { 
     2115                $image = imagecreatefromjpeg($file); 
     2116            } 
     2117            elseif ($type[2] == 3) { 
     2118                $image = imagecreatefrompng($file); 
     2119            } 
    20992120 
    2100                 // if the associated function doesn't exist - then it's not 
    2101                 // handle. duh. i hope. 
     2121            if (function_exists('imageantialias')) { imageantialias($image, TRUE);} 
     2122            $image_attr = getimagesize($file); 
     2123            $image_width  = $image_attr[0]; 
     2124            $image_height = $image_attr[1]; 
     2125            
     2126            // either set the max width and/or max height directly,  
     2127            // proportional or don't do a thing and raise an error 
     2128            if( isset($w) && is_int($w) && isset($h) && is_int($h) ) { 
     2129                $image_new_width  = $w; 
     2130                $image_new_height = $h; 
     2131            } elseif ( isset($w) && is_int($w) ) { 
     2132                $image_new_width  = $w; 
     2133                $image_ratio      = $image_width / $image_new_width; 
     2134                $image_new_height = $image_height / $image_ratio; 
     2135            } elseif ( isset($h) && is_int($h) ) { 
     2136                $image_new_height  = $h; 
     2137                $image_ratio       = $image_height / $image_new_height; 
     2138                $image_new_width   = $image_width / $image_ratio; 
     2139            } else { 
     2140               return $error = array('error' =>__("No thumbnail dimensions specified")); 
     2141            } 
     2142             
     2143            $thumbnail = imagecreatetruecolor($image_new_width, $image_new_height); 
     2144            @ imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_attr[0], $image_attr[1]); 
    21022145 
    2103                 if (!function_exists( 'imagegif' ) && $type[2] == 1 ) { 
    2104                         $error = __( 'Filetype not supported. Thumbnail not created.' ); 
    2105                 } 
    2106                 elseif (!function_exists( 'imagejpeg' ) && $type[2] == 2 ) { 
    2107                         $error = __( 'Filetype not supported. Thumbnail not created.' ); 
    2108                 } 
    2109                 elseif (!function_exists( 'imagepng' ) && $type[2] == 3 ) { 
    2110                         $error = __( 'Filetype not supported. Thumbnail not created.' ); 
    2111                 } else { 
     2146            // If no filters change the filename, we'll do a default transformation. 
     2147            $thumb = preg_replace('!(\.[^.]+)?$!', __('.thumbnail').'$1', basename($file), 1); 
    21122148 
    2113                         // create the initial copy from the original file 
    2114                         if ( $type[2] == 1 ) { 
    2115                                 $image = imagecreatefromgif( $file ); 
    2116                         } 
    2117                         elseif ( $type[2] == 2 ) { 
    2118                                 $image = imagecreatefromjpeg( $file ); 
    2119                         } 
    2120                         elseif ( $type[2] == 3 ) { 
    2121                                 $image = imagecreatefrompng( $file ); 
    2122                         } 
    2123  
    2124                         if ( function_exists( 'imageantialias' )) 
    2125                                 imageantialias( $image, TRUE ); 
    2126  
    2127                         $image_attr = getimagesize( $file ); 
    2128  
    2129                         // figure out the longest side 
    2130  
    2131                         if ( $image_attr[0] > $image_attr[1] ) { 
    2132                                 $image_width = $image_attr[0]; 
    2133                                 $image_height = $image_attr[1]; 
    2134                                 $image_new_width = $max_side; 
    2135  
    2136                                 $image_ratio = $image_width / $image_new_width; 
    2137                                 $image_new_height = $image_height / $image_ratio; 
    2138                                 //width is > height 
    2139                         } else { 
    2140                                 $image_width = $image_attr[0]; 
    2141                                 $image_height = $image_attr[1]; 
    2142                                 $image_new_height = $max_side; 
    2143  
    2144                                 $image_ratio = $image_height / $image_new_height; 
    2145                                 $image_new_width = $image_width / $image_ratio; 
    2146                                 //height > width 
    2147                         } 
    2148  
    2149                         $thumbnail = imagecreatetruecolor( $image_new_width, $image_new_height); 
    2150                         @ imagecopyresampled( $thumbnail, $image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_attr[0], $image_attr[1] ); 
    2151  
    2152                         // If no filters change the filename, we'll do a default transformation. 
    2153                         if ( basename( $file ) == $thumb = apply_filters( 'thumbnail_filename', basename( $file ) ) ) 
    2154                                 $thumb = preg_replace( '!(\.[^.]+)?$!', __( '.thumbnail' ).'$1', basename( $file ), 1 ); 
    2155  
    2156                         $thumbpath = str_replace( basename( $file ), $thumb, $file ); 
    2157  
    2158                         // move the thumbnail to it's final destination 
    2159                         if ( $type[2] == 1 ) { 
    2160                                 if (!imagegif( $thumbnail, $thumbpath ) ) { 
    2161                                         $error = __( "Thumbnail path invalid" ); 
    2162                                 } 
    2163                         } 
    2164                         elseif ( $type[2] == 2 ) { 
    2165                                 if (!imagejpeg( $thumbnail, $thumbpath ) ) { 
    2166                                         $error = __( "Thumbnail path invalid" ); 
    2167                                 } 
    2168                         } 
    2169                         elseif ( $type[2] == 3 ) { 
    2170                                 if (!imagepng( $thumbnail, $thumbpath ) ) { 
    2171                                         $error = __( "Thumbnail path invalid" ); 
    2172                                 } 
    2173                         } 
    2174  
    2175                 } 
    2176         } else { 
    2177                 $error = __( 'File not found' ); 
    2178         } 
    2179  
    2180         if (!empty ( $error ) ) { 
    2181                 return $error; 
    2182         } else { 
    2183                 apply_filters( 'wp_create_thumbnail', $thumbpath ); 
    2184                 return $thumbpath; 
    2185         } 
     2149            $thumbpath = str_replace(basename($file), $thumb, $file); 
     2150            
     2151            // move the thumbnail to it's final destination 
     2152            if ($type[2] == 1) { 
     2153                if (!imagegif($thumbnail, $thumbpath)) { 
     2154                    return $error = array('error'=>__("Thumbnail path invalid")); 
     2155                } 
     2156            } 
     2157            elseif ($type[2] == 2) { 
     2158                if (!imagejpeg($thumbnail, $thumbpath)) { 
     2159                    return $error = array('error'=>__("Thumbnail path invalid")); 
     2160                } 
     2161            } 
     2162            elseif ($type[2] == 3) { 
     2163                if (!imagepng($thumbnail, $thumbpath)) { 
     2164                    return $error = array('error'=>__("Thumbnail path invalid")); 
     2165                } 
     2166            } 
     2167        } 
     2168    } else { 
     2169        return $error = array('error'=>__('File not found')); 
     2170    } 
     2171    apply_filters( 'wp_create_thumbnail', $thumbpath ); 
     2172    return $thumbpath; 
    21862173} 
    21872174 
    21882175?>