Wordpress Themes - WP Forum at BFA
Click Here To DONATE! Support the theme development, get more attention and additional benefits based on your donation level. Your forum name will be highlighted.

Wordpress Themes - WP Forum at BFA » WordPress Themes » Montezuma Theme »

Scale-UP thumbnails - Anyone interested in this mod?


Build custom WP THEMES, without
coding.
Click here for THEMEFRAME

From the author of Atahualpa, the #1 most
downloaded (700,000+) theme @ wordpress.org
  #1  
Old Nov 18, 2012, 08:30 PM
troyp
 
10 posts · Mar 2011
Not all of my featured images were larger than 620, so the default code to scale-down images didn't work like I wanted. I've updated the code to scale up the featured image to 620, then crop to fit the slice.

If people are interested I can post the modified code here.
  #2  
Old Nov 18, 2012, 08:50 PM
jerryc
 
367 posts · Oct 2012
Florida
Quote:
Originally Posted by troyp
Not all of my featured images were larger than 620, so the default code to scale-down images didn't work like I wanted. I've updated the code to scale up the featured image to 620, then crop to fit the slice.

If people are interested I can post the modified code here.
Enhancements like this are mostly always worth having, troy. Please post the code. Thanks.
  #3  
Old Nov 21, 2012, 02:01 AM
migdu
 
4 posts · Nov 2012
Yeah ... that was just what I was looking for! Please post the code! Thanks in advance.
  #4  
Old Nov 21, 2012, 02:30 PM
troyp
 
10 posts · Mar 2011
Here is an updated includes/thumb.php file.

I added a function called bfa_image_crop_dimensions that does the resize up. Then had to modify the bfa_vt_resize function.

The code has my initials in comments around my modifications. I hope this helps others.
PHP Code:
<?php 
/*
 * Resize images dynamically using wp built in functions
 * Victor Teixeira
 *
 * php 5.2+
 *
 * Exemplo de uso:
 * 
 * <?php 
 * $thumb = get_post_thumbnail_id(); 
 * $image = vt_resize( $thumb, '', 140, 110, true );
 * ?>
 * <img src="<?php echo $image[url]; ?>" width="<?php echo $image[width]; ?>" height="<?php echo $image[height]; ?>" />
 *
 * @param int $attach_id
 * @param string $img_url
 * @param int $width
 * @param int $height
 * @param bool $crop
 * @return array
 */

function bfa_delete_thumb_transient$post_id ) {
    
delete_site_transient'bfa_thumb_' $post_id );
}
add_action'edit_post''bfa_delete_thumb_transient' );

 
/* TODO: Add parameter $link = 'fullsize' to link to full size image */
function bfa_thumb$width$height$crop false$before ''$after ''$link 'permalink' ) {

    global 
$post$upload_dir;
    
    if( ! 
is_writable$upload_dir['basedir'] ) ) {
      
error_log("bfa_thumb non-writable basedir=".$upload_dir['basedir']);
        return;
    }
    
    
$id $post->ID;
    
/* if the other fails : */
    /*
    global $wp_query;
    $id = $wp_query->post->ID;
    */
    
    #$bfa_thumb = get_site_transient( 'bfa_thumb_' . $id );
    
    #if ( false === $bfa_thumb ) {
        // It wasn't there, so regenerate the data and save the transient

        
$bfa_thumb '';
    
        
$hasthumb FALSE;
        
$hassrc FALSE;
        
$has_thumbnail FALSE;
        
        if( 
has_post_thumbnail() ) {
            
$thumb get_post_thumbnail_id(); 
            
$hasthumb TRUE;
        } elseif ( 
bfa_has_attachment() ) {
            
$thumb bfa_get_first_attachment_id(); 
            
$hasthumb TRUE;
        } elseif( 
bfa_has_img_src() ) {
            
$thumb bfa_get_first_img_src();
            
$hassrc TRUE;
        
        }
        
        if( 
$hasthumb == TRUE ) {
            
$thumbimage bfa_vt_resize$thumb,'' $width$height$crop );
            
$has_thumbnail TRUE;
        } elseif( 
$hassrc == TRUE ) {
            
$thumbimage bfa_vt_resize''$thumb $width$height$crop );
            
$has_thumbnail TRUE;
        }    
        
        if( 
$has_thumbnail == TRUE ) { 
            
$bfa_thumb .= $before;
            if( 
$link == 'permalink' 
                
$bfa_thumb .= '<a href="' get_permalink$id ) . '">';
        
            
$bfa_thumb .= '<img src="' $thumbimage['url'] . '" width="' $thumbimage['width'] . '" height="' $thumbimage['height'] . '" />
            <span></span>'
;
        
            if( 
$link == 'permalink' 
                
$bfa_thumb .= '</a>';
            
$bfa_thumb .= $after;
        } 
    
        
#set_site_transient( 'bfa_thumb_' . $id, $bfa_thumb, 60*60*1 );
    #} 
    
    
echo $bfa_thumb;
}    

    
function 
bfa_has_attachment() {

    global 
$post;    
        
    
$args = array( 'post_type' => 'attachment''numberposts' => -1'post_status' => null'post_parent' => $post->ID ); 
    
$attachments get_posts($args);
    if (
$attachments
        return 
TRUE;
        
    return 
FALSE;
}

function 
bfa_get_first_attachment_id() {

    global 
$post;    
        
    
$args = array( 'post_type' => 'attachment''numberposts' => -1'post_status' => null'post_parent' => $post->ID ); 
    
$attachments get_posts($args);
    return 
$attachments[0]->ID;
}


function 
bfa_has_img_src$args = array() ) {

    global 
$post;

    
$site_url site_url();
    
preg_match_all'|<img.*?src=[\'"](.*?)[\'"].*?>|i'$post->post_content$matches );

    foreach( 
$matches[1] as $match ) {
        if ( isset( 
$match ) && strpos$match$site_url ) !== FALSE )
        return 
TRUE;
    }
    return 
FALSE;
}

function 
bfa_get_first_img_src$args = array() ) {

    global 
$post;
    
$site_url site_url();
    
preg_match_all'|<img.*?src=[\'"](.*?)[\'"].*?>|i'$post->post_content$matches );

    foreach( 
$matches[1] as $match ) {
        if ( isset( 
$match ) && strpos$match$site_url ) !== FALSE )
            return 
$match;
    }
    
    return 
false;
        
}

//TRP -- insert this block to enable scaling images up to fit
function bfa_image_crop_dimensions($default$orig_w$orig_h$new_w$new_h$crop){
    if ( !
$crop ) return null// let the wordpress default function handle this

    
$aspect_ratio $orig_w $orig_h;
    
$size_ratio max($new_w $orig_w$new_h $orig_h);

    
$crop_w round($new_w $size_ratio);
    
$crop_h round($new_h $size_ratio);

    
$s_x floor( ($orig_w $crop_w) / );
    
$s_y floor( ($orig_h $crop_h) / );

    return array( 
00, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h );
}
add_filter('image_resize_dimensions''bfa_image_crop_dimensions'106);
// TRP end

function bfa_vt_resize$attach_id null$img_url null$width$height$crop false ) {

  
$width=intval($width); $height=intval($height);//TRP - use only the integer value

    // this is an attachment, so we have the ID
    
if ( $attach_id ) {
    
        
$image_src wp_get_attachment_image_src$attach_id'full' );
        
$file_path get_attached_file$attach_id );
    
    
// this is not an attachment, let's use the image url
    
} else if ( $img_url ) {
        
        
$file_path parse_url$img_url );
        
// $file_path = $_SERVER['DOCUMENT_ROOT'] . $file_path['path'];
        
$file_path str_replace'//''/'$_SERVER['DOCUMENT_ROOT'] . $file_path['path']);
        
        
//$file_path = ltrim( $file_path['path'], '/' );
        //$file_path = rtrim( ABSPATH, '/' ).$file_path['path'];
        
        
$orig_size getimagesize$file_path );
        
        
$image_src[0] = $img_url;
        
$image_src[1] = $orig_size[0];
        
$image_src[2] = $orig_size[1];
    }
    
    
$file_info pathinfo$file_path );
    
$extension '.'$file_info['extension'];

    
// the image path without the extension
    
$no_ext_path $file_info['dirname'].'/'.$file_info['filename'];

    
$cropped_img_path $no_ext_path.'-'.$width.'x'.$height.$extension;
  
    
// checking if the file size is larger than the target size
    // if it is smaller or the same size, stop right here and return
    //TRP orig --- if ( $image_src[1] > $width || $image_src[2] > $height ) {

        // the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match)
        
if ( file_exists$cropped_img_path ) ) {

            
$cropped_img_url str_replacebasename$image_src[0] ), basename$cropped_img_path ), $image_src[0] );
            
            
$vt_image = array (
                
'url' => $cropped_img_url,
                
'width' => $width,
                
'height' => $height
            
);
            
            return 
$vt_image;
        }

        
// $crop = false
        //TRP orig if ( $crop == false ) {
        
if ($image_src[1] > $width) {  //TRP only scale down if it is wider
        
            // calculate the size proportionaly
            
$proportional_size wp_constrain_dimensions$image_src[1], $image_src[2], $width$height );
            
$resized_img_path $no_ext_path.'-'.$proportional_size[0].'x'.$proportional_size[1].$extension;            

            
// checking if the file already exists
            
if ( file_exists$resized_img_path ) ) {
            
                
$resized_img_url str_replacebasename$image_src[0] ), basename$resized_img_path ), $image_src[0] );

                
$vt_image = array (
                    
'url' => $resized_img_url,
                    
'width' => $proportional_size[0],
                    
'height' => $proportional_size[1]
                );
                
                return 
$vt_image;
            }
        }

        
// no cache files - let's finally resize it
        
$new_img_path image_resize$file_path$width$height$crop );
        
$new_img_size getimagesize$new_img_path );
        
$new_img str_replacebasename$image_src[0] ), basename$new_img_path ), $image_src[0] );

        
// resized output
        
$vt_image = array (
            
'url' => $new_img,
            
'width' => $new_img_size[0],
            
'height' => $new_img_size[1]
        );
        
        return 
$vt_image;
/*TRP this section not needed
    }

    // default output - without resizing
    $vt_image = array (
        'url' => $image_src[0],
        'width' => $image_src[1],
        'height' => $image_src[2]
    );
    
    return $vt_image;
    TRP */
}
  #5  
Old Jan 5, 2013, 05:51 AM
Neut's Avatar
Neut
 
26 posts · Jul 2010
The Netherlands, Europe, Earth
troyp:
Thanks and kudos!

Last edited by Neut; Jan 5, 2013 at 08:37 AM.
  #6  
Old Jan 5, 2013, 10:06 AM
jerryc
 
367 posts · Oct 2012
Florida
Quote:
Originally Posted by troyp
Here is an updated includes/thumb.php file.
This is great, troy. I have been able to shrink pics to fit smaller spaces, but didn't have a way to make smaller pics fill bigger spaces. Nice enhancement. Thanks.


Quote:
I added a function called bfa_image_crop_dimensions that does the resize up. Then had to modify the bfa_vt_resize function.
As far as naming conventions, consider this. Bytesforall prefaces all its custom functions with bfa_. To differentiate, and not to have them conflict with anything bfa or wp might have now or come out with at some time in the future, consider prefacing all your custom global variables and function names with custom_ or something like that. It also makes them easier to find on a search.

Keep up the great work, and thanks for sharing.

Best,

Jerry

Last edited by jerryc; Jan 5, 2013 at 10:11 AM.

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes


Similar Threads
Thread Thread Starter Forum Replies Last Post
Make HTML in Header Scale or Resize? GRF Header configuration & styling 3 Jun 5, 2012 04:03 AM
I am very interested in themeframe, but... homerochapa ThemeFrame Presales 4 Sep 22, 2010 03:58 AM
Thumbnails bilalasd Other BFA WordPress Themes 2 Mar 20, 2010 12:24 AM
Can Atahualpa scale for high traffic? joshj Atahualpa 3 Wordpress theme 1 Sep 19, 2009 03:46 PM


All times are GMT -6. The time now is 06:12 AM.


Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.