Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 11-28-2003, 04:41 AM
matthew tucker's Avatar
matthew tucker matthew tucker is offline
 
Join Date: Nov 2002
Location: Sydney, Australia
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default generating real thumbnails on the fly

Has anyone worked out how to generate a real resized image thumbnail on the fly using PHP and the GD library? I can't find a hack for it.

In other words, not just displaying the image in a resized <img> tage, but displaying a real re-sized image?

I can do it from an image FILE read directly from an images folder, but I can't work out how to pass the data from $attachment(filedata) to the ImageCreateFromJPEG ($imgfile) function. Just replacing $imgfile with $attachment(filedata) doesn't work of course.

The top image in the left hand column at the following website is done from a file in a folder.
http://www.screeneditors.com/forums/index.php

the other images in the left hand column are just resized. Modem users complaining a bit ...

is there a better way than saving the imagedata in a temp file then processing it?
Reply With Quote
  #2  
Old 11-28-2003, 03:01 PM
NTLDR's Avatar
NTLDR NTLDR is offline
Coder
 
Join Date: Apr 2002
Location: Bristol, UK
Posts: 3,644
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to specify a filename and path, passing the data won't work. You can use the URL to the attachment and pass that:

PHP Code:
imagecreatefromjpeg('hhtp://www.mysite.com/forums/attachment.php?attachmentid=2'); 
Something similar to the above should work.
Reply With Quote
  #3  
Old 11-29-2003, 08:33 PM
matthew tucker's Avatar
matthew tucker matthew tucker is offline
 
Join Date: Nov 2002
Location: Sydney, Australia
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you Lee

But most of my images are in the MYSQL attachments database.

How can I do the above transformation on them *without* exporting them to disk as files??

I'm think about installing the "attachments as files" hack but I don't want to unless I really need to.

(Botley? I was brought up in Botley, Oxford! first time I've seen that name in 20 years!)
Reply With Quote
  #4  
Old 11-29-2003, 08:37 PM
filburt1 filburt1 is offline
 
Join Date: Feb 2002
Location: Maryland, US
Posts: 6,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by matthew tucker
Thank you Lee

But most of my images are in the MYSQL attachments database.

How can I do the above transformation on them *without* exporting them to disk as files??

I'm think about installing the "attachments as files" hack but I don't want to unless I really need to.

(Botley? I was brought up in Botley, Oxford! first time I've seen that name in 20 years!)
Look at (IIRC) imagecreatefromstring: http://www.php.net/imagecreatefromstring
Reply With Quote
  #5  
Old 11-30-2003, 08:13 AM
matthew tucker's Avatar
matthew tucker matthew tucker is offline
 
Join Date: Nov 2002
Location: Sydney, Australia
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

imagecreatefromstring() does it!

thanks for that pointer.

but it seems REALLY slow ... is this normal? I mean, it seems slower than just loading the whole image!

using basic code from PHP.net ...

PHP Code:
 header('Content-type: image/jpeg');
$data $attachmentinfo[filedata];
$size 150
$src imagecreatefromstring ($data);
$width imagesx($src);
$height imagesy($src);
$aspect_ratio $height/$width
 
if (
$height <= $size) {
$new_w $width;
$new_h $height;
} else {
$new_h $size;
$new_w abs($new_h $aspect_ratio);
}
 
$img imagecreatetruecolor ($new_w,$new_h); 
 
imagecopyresampled ($img,$src,0,0,0,0,$new_w,$new_h,$width,$height); 
 
// or imagecopyresized()
 
imagejpeg($img ); //,'', 90 
Reply With Quote
  #6  
Old 11-30-2003, 08:49 AM
matthew tucker's Avatar
matthew tucker matthew tucker is offline
 
Join Date: Nov 2002
Location: Sydney, Australia
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OK yep, its normal. Just read up a bit more on PHP.net.

So ... I think from now on I'll be generating thumbs on upload and store in database...
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 04:34 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04217 seconds
  • Memory Usage 2,219KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (6)post_thanks_box
  • (6)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (6)post_thanks_postbit_info
  • (6)postbit
  • (6)postbit_onlinestatus
  • (6)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete