1799 posts
  • Has been a member for 5-6 years
  • Germany
  • Exclusive Author
  • Repeatedly Helped protect Envato Marketplaces against copyright violations
  • Sold between 5 000 and 10 000 dollars
  • Envato Studio (Microlancer) Beta Tester
  • Bought between 10 and 49 items
  • Referred between 1 and 9 users
BroOf says

What is better? I need a flexible solution because I have 4 different portfolio layouts where all image sizes are different. How to realize this, I mean if the user uploads one image and selects the first portfolio layout where every image is 100×100px and after a while he decides to use the second layout where every image is 250×150px…

How do you guys do it?

821 posts
  • Power Elite Author: Sold between 1 000 000 - 1 999 999 dollars
  • Power Elite Author
  • Won a Competition
  • Exclusive Author
  • Repeatedly Helped protect Envato Marketplaces against copyright violations
  • Europe
  • Bought between 50 and 99 items
+2 more
wpbakery says

Regenerate thumbnails plugin or you can write your own function to use wp resizing methods if image with x height and x width doesn’t exist

1799 posts
  • Has been a member for 5-6 years
  • Germany
  • Exclusive Author
  • Repeatedly Helped protect Envato Marketplaces against copyright violations
  • Sold between 5 000 and 10 000 dollars
  • Envato Studio (Microlancer) Beta Tester
  • Bought between 10 and 49 items
  • Referred between 1 and 9 users
BroOf says

Do you have any tutorials on this?

63 posts
  • Author had a File in an Envato Bundle
  • Bought between 1 and 9 items
  • Elite Author
  • Europe
  • Exclusive Author
  • Has been a member for 3-4 years
  • Sold between 50 000 and 100 000 dollars
DMThemes says

I haven’t tested it, but basically it should work.


<?php if ($portfolio_layout == 'option 1') {
         $width = 200; $height=400;
}
elseif ($portfolio_layout == 'option 2') {
        $width = 100; $height=600;
}
elseif (etc. etc. you add all the options and potential widhts/heights)

//then you just call the image using timthumb:
?>
<img src="<?php bloginfo('template_url'); ?>/thumbnails/timthumb.php?src=<?php echo $portfoliothumbnail; ?>&amp;h=<?php echo $height; ?>&amp;w=<?php echo $width; ?>&amp;zc=1" />

It’s little messy, but just check it out, it should do the trick :) And use your variable names, of course.

PS just to mention it – you need the timthumb script:)

821 posts
  • Power Elite Author: Sold between 1 000 000 - 1 999 999 dollars
  • Power Elite Author
  • Won a Competition
  • Exclusive Author
  • Repeatedly Helped protect Envato Marketplaces against copyright violations
  • Europe
  • Bought between 50 and 99 items
+2 more
wpbakery says

Do you have any tutorials on this?

Sorry, but no. I’m thinking about this too, have a little plan in my head, but haven’t got time to try it.

1383 posts
  • Bought between 10 and 49 items
  • Exclusive Author
  • Has been a member for 4-5 years
  • Referred between 10 and 49 users
  • Serbia
wpCanyonThemes says

No damn timthumb.

function getyourowndamnfunctionprepend_resize($attach_id = null, $img_url = null, $width, $height, $crop = false) {

    // 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'];

        $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
    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_replace(basename($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
        if ($crop == false) {

            // 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_replace(basename($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_replace(basename($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;
    }

    // default output - without resizing
    $vt_image = array (
        'url' => $image_src[0],
        'width' => $image_src[1],
        'height' => $image_src[2]
    );

    return $vt_image;

}
821 posts
  • Power Elite Author: Sold between 1 000 000 - 1 999 999 dollars
  • Power Elite Author
  • Won a Competition
  • Exclusive Author
  • Repeatedly Helped protect Envato Marketplaces against copyright violations
  • Europe
  • Bought between 50 and 99 items
+2 more
wpbakery says

No damn timthumb.

Totally agree!!!

Nice code snippet. I believe a lot of users/theme authors will want to use it, if you don’t mind. :curious:

1799 posts
  • Has been a member for 5-6 years
  • Germany
  • Exclusive Author
  • Repeatedly Helped protect Envato Marketplaces against copyright violations
  • Sold between 5 000 and 10 000 dollars
  • Envato Studio (Microlancer) Beta Tester
  • Bought between 10 and 49 items
  • Referred between 1 and 9 users
BroOf says

@wpCanyonThemes

Wow thank you for this snippet! I will try it tomorrow. You deserve a forum super star badge ;)

415 posts
  • Elite Author
  • Sold between 250 000 and 1 000 000 dollars
  • Has been a member for 5-6 years
  • Exclusive Author
  • Grew a moustache for the Envato Movember competition
  • Bought between 10 and 49 items
  • Referred between 10 and 49 users
  • Portugal
unisphere says

I’m using wpCanyonThemes snipet in my upcoming theme, think I saw you post it a few days ago in another topic, and so far so good, it’s a mix between TimThumb and the WordPress built-in thumbnail system with the advantage of not having to worry about folder permissions which by itself is a major plus since you won’t have support questions about this (any author who used TimThumb in the past know what I’m talking about).

Anyway, I think we are free to use that snipet as long as we credit its source: http://core.trac.wordpress.org/ticket/15311

Cheers

1383 posts
  • Bought between 10 and 49 items
  • Exclusive Author
  • Has been a member for 4-5 years
  • Referred between 10 and 49 users
  • Serbia
wpCanyonThemes says

I’m using wpCanyonThemes snipet in my upcoming theme, think I saw you post it a few days ago in another topic, and so far so good, it’s a mix between TimThumb and the WordPress built-in thumbnail system with the advantage of not having to worry about folder permissions which by itself is a major plus since you won’t have support questions about this (any author who used TimThumb in the past know what I’m talking about).

Anyway, I think we are free to use that snipet as long as we credit its source: http://core.trac.wordpress.org/ticket/15311

Cheers

Yup. Tried to find the url and share it but no luck. :)

@BroOf – Had it in January :) Was more active, was crazy the last month with the new themes so didn’t have much time, hope to find some soon.

by
by
by
by
by
by