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?
- Sold between 250 000 and 1 000 000 dollars
- Won a Competition
- Author was Featured
- Item was Featured
- Exclusive Author
- Repeatedly Helped protect Envato Marketplaces against copyright violations
- Europe
- Bought between 10 and 49 items
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
Do you have any tutorials on this?
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; ?>&h=<?php echo $height; ?>&w=<?php echo $width; ?>&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:)
- Sold between 250 000 and 1 000 000 dollars
- Won a Competition
- Author was Featured
- Item was Featured
- Exclusive Author
- Repeatedly Helped protect Envato Marketplaces against copyright violations
- Europe
- Bought between 10 and 49 items
BroOf said
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.
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;
}
- Sold between 250 000 and 1 000 000 dollars
- Won a Competition
- Author was Featured
- Item was Featured
- Exclusive Author
- Repeatedly Helped protect Envato Marketplaces against copyright violations
- Europe
- Bought between 10 and 49 items
wpCanyonThemes said
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:
@wpCanyonThemes
Wow thank you for this snippet! I will try it tomorrow. You deserve a forum super star badge 
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
unisphere said
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.
