WordPress.org

Make WordPress Core

Changeset 20706


Ignore:
Timestamp:
05/02/12 21:35:56 (3 years ago)
Author:
ryan
Message:

Don't convert png to jpg when cropping a header. Prevents stomping transparency. Props SergeyBiryukov, kovshenin. fixes #20555

Location:
trunk/wp-admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/custom-header.php

    r20384 r20706  
    859859        $url = str_replace(basename($parent_url), basename($cropped), $parent_url); 
    860860 
     861        $size = @getimagesize( $cropped ); 
     862        $image_type = ( $size ) ? $size['mime'] : 'image/jpeg'; 
     863 
    861864        // Construct the object array 
    862865        $object = array( 
     
    864867            'post_title' => basename($cropped), 
    865868            'post_content' => $url, 
    866             'post_mime_type' => 'image/jpeg', 
     869            'post_mime_type' => $image_type, 
    867870            'guid' => $url, 
    868871            'context' => 'custom-header' 
  • trunk/wp-admin/includes/image.php

    r20454 r20706  
    4545 */ 
    4646function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) { 
     47    if ( 0 == $src_x && 0 == $src_y && $src_w == $dst_w && $src_h == $dst_h ) 
     48        return ( is_numeric( $src ) ) ? get_attached_file( $src ) : $src; 
     49 
    4750    if ( is_numeric( $src ) ) { // Handle int as attachment ID 
    4851        $src_file = get_attached_file( $src ); 
     
    5154            // This can occur with certain file replication plugins. 
    5255            $post = get_post( $src ); 
     56            $image_type = $post->post_mime_type; 
    5357            $src = load_image_to_edit( $src, $post->post_mime_type, 'full' ); 
    5458        } else { 
     59            $size = @getimagesize( $src_file ); 
     60            $image_type = ( $size ) ? $size['mime'] : ''; 
    5561            $src = wp_load_image( $src_file ); 
    5662        } 
    5763    } else { 
     64        $size = @getimagesize( $src ); 
     65        $image_type = ( $size ) ? $size['mime'] : ''; 
    5866        $src = wp_load_image( $src ); 
    5967    } 
     
    7987        $dst_file = str_replace( basename( $src_file ), 'cropped-' . basename( $src_file ), $src_file ); 
    8088 
    81     $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file ); 
     89    if ( 'image/png' != $image_type ) 
     90        $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file ); 
    8291 
    8392    // The directory containing the original file may no longer exist when 
     
    8594    wp_mkdir_p( dirname( $dst_file ) ); 
    8695 
    87     if ( imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) ) 
     96    if ( 'image/png' == $image_type && imagepng( $dst, $dst_file ) ) 
     97        return $dst_file; 
     98    elseif ( imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) ) 
    8899        return $dst_file; 
    89100    else 
Note: See TracChangeset for help on using the changeset viewer.