Go Back   vb.org Archive > Community Discussions > Modification Requests/Questions (Unpaid)
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 03-06-2004, 08:20 PM
Dolamite's Avatar
Dolamite Dolamite is offline
 
Join Date: Nov 2001
Posts: 82
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default PHP - PNG Transparency hack....

I read about this PNG transparency "fix" that can be done through PHP....

http://www.koivi.com/ie-png-transparency/

I've been using the javascript fix for a while now, but since it can't do background images, this seems like the only way.....

I've tried this many ways.... but I'm not a vb hacking expert so.... I was hoping maybe one of you kind people out there would have a use for this.... as it would allow a very powerful addition to VB.... allowing for easy use of High Quality PNG images with transparency in IE.... whether or not the person has javascript enabled (one of the main problems with the javascript fix)

Any help on this issue will be "greatly" appreciated
Reply With Quote
  #2  
Old 03-12-2004, 01:06 PM
Dolamite's Avatar
Dolamite Dolamite is offline
 
Join Date: Nov 2001
Posts: 82
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

wow... no interest in this huh?

thats too bad...
Reply With Quote
  #3  
Old 03-12-2004, 01:39 PM
Natch's Avatar
Natch Natch is offline
 
Join Date: Nov 2002
Location: Australia
Posts: 851
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I also have a big dislike to IE, but as a designer of a range of sites, I have to support it, and as 90% of the world still uses IE, why not just process the output of the vB rendering process thru this function ...
PHP Code:
<?php
/*
* replacePngTags - Justin Koivisto [W.A. Fisher Interactive] 7/1/2003 10:45AM
*
* Modifies IMG tags for MSIE5+ browsers to ensure that PNG-24 transparencies
* are displayed correctly. Replaces original SRC attribute with a transparent
* GIF file (spacer.gif) that is located in the same directory as the orignal
* image, and adds the STYLE attribute needed to for the browser. (Matching
* is case-insensitive.
*
* @param $x String containing the content to search and replace in.
* @result Returns the modified string.
*/
function replacePngTags($x){
    
// make sure that we are only replacing for the Windows versions of Internet
    // Explorer 5+, and not Opera identified as MSIE
    
$msie='/msie\s([5-9])\.?[0-9]*.*(win)/i';
    
$opera='/opera\s+[0-9]+/i';
    if(!isset(
$_SERVER['HTTP_USER_AGENT']) ||
        !
preg_match($msie,$_SERVER['HTTP_USER_AGENT']) ||
        
preg_match($opera,$_SERVER['HTTP_USER_AGENT']))
        return 
$x;

    
// OK, time to find all the IMG tags with ".png" in them
    
preg_match_all('/<img.*\.png.*>/Ui',$x,$images);
    while(list(
$imgnum,$v)=@each($images[0])){
        
$original=$v;
        
$atts=''$width=0$height=0;
        
// If the size is defined by styles, find
        
preg_match_all('/style=".*(width: ([0-9]+))px.*'.
                     
'(height: ([0-9]+))px.*"/Ui',$v,$arr2);
        if(
is_array($arr2) && count($arr2[0])){
            
// size was defined by styles, get values
            
$width=$arr2[2][0];
            
$height=$arr2[4][0];
        }
        
// size was not defined by styles, get values
        
preg_match_all('/width=\"?([0-9]+)\"?/i',$v,$arr2);
        if(
is_array($arr2) && count($arr2[0])){
            
$width=$arr2[1][0];
        }
        
preg_match_all('/height=\"?([0-9]+)\"?/i',$v,$arr2);
        if(
is_array($arr2) && count($arr2[0])){
            
$height=$arr2[1][0];
        }
        
preg_match_all('/src=\"([^\"]+\.png)\"/i',$v,$arr2);
        if(isset(
$arr2[1][0]) && !empty($arr2[1][0]))
            
$image=$arr2[1][0];
        else
            
$image=NULL;

        
// We do this so that we can put our spacer.gif image in the same
        // directory as the image
        
$tmp=split('[\\/]',$image);
        
array_pop($tmp);
        
$image_path=join('/',$tmp);
        if(
strlen($image_path)) $image_path.='/';

        
// end quote is already supplied by originial src attribute
        
$replace_src_with=$image_path.'spacer.gif" style="width: '.$width.
            
'px; height: '.$height.'px; filter: progidXImageTransform.'.
         
'Microsoft.AlphaImageLoader(src=\''.$image.'\', sizingMethod='.
            
'\'scale\')';

        
// now create the new tag from the old
        
$new_tag=str_replace($image,$replace_src_with,$original);

        
// now place the new tag into the content
        
$x=str_replace($original,$new_tag,$x);
    }
    return 
$x;
}
?>
or if that causes a performance hit (which it might/will for IE users), add the function itself to includes/functions.php, and add the function call manually to the individual locations where you have
Code:
<img src="someimage.png" alt="image with transparency" />
I don't see it as a big issue at all ... if IE can't handle it, then force IE to handle it ... but there is a tool to deal with it built into IE - a filter Microsoft.AlphaImageLoader which will properly render the transparency ...

originally posted on vb.com ... http://www.vbulletin.com/forum/showp...5&postcount=20
Reply With Quote
  #4  
Old 03-15-2004, 06:16 PM
Dolamite's Avatar
Dolamite Dolamite is offline
 
Join Date: Nov 2001
Posts: 82
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i responded to you over at vb.com....

i appreciate the info... but i'm getting errors when i try to add that code to functions.php....

any suggestions on where to put the code?
Reply With Quote
  #5  
Old 03-16-2004, 03:41 AM
Natch's Avatar
Natch Natch is offline
 
Join Date: Nov 2002
Location: Australia
Posts: 851
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Working on it - I'll let you know ...
Reply With Quote
  #6  
Old 03-16-2004, 09:16 PM
Dolamite's Avatar
Dolamite Dolamite is offline
 
Join Date: Nov 2001
Posts: 82
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ah, that's great man.... i really appreciate it
Reply With Quote
  #7  
Old 04-06-2004, 03:58 PM
Dolamite's Avatar
Dolamite Dolamite is offline
 
Join Date: Nov 2001
Posts: 82
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

eh guess i'll go back to using gifs until those bastards at microsoft decide to support pngs properly
Reply With Quote
  #8  
Old 05-02-2004, 11:20 PM
Dolamite's Avatar
Dolamite Dolamite is offline
 
Join Date: Nov 2001
Posts: 82
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i don;t suppose theres been any progress made on this?
Reply With Quote
  #9  
Old 09-10-2004, 06:38 PM
Zach's Avatar
Zach Zach is offline
 
Join Date: Nov 2001
Posts: 66
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dolamite
eh guess i'll go back to using gifs until those bastards at microsoft decide to support pngs properly
Yea how dare they make a browser four or five years ago and not have it support things that have become the norm since then. Jeez, didnt they look in their crystal ball or something?


Any way - I was messing with this, and actually found this thread in google - but since I was looking for something related I gave this a whirl - worked like a charm - with the instructions above - only thing I had an issue with is the spacer.png - which i just removed the path from the start of the function and placed it in the same directory as the rest of the main files and it worked no problem.


Also - after I got this one working as listed above - I then went to the original website, and grabbed his updated code - and replaced the entire function with that - this version needs no sizes defined.
Reply With Quote
  #10  
Old 09-10-2004, 06:42 PM
Zach's Avatar
Zach Zach is offline
 
Join Date: Nov 2001
Posts: 66
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

and actually I thought I was in the other thread when I responded
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 01:04 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04712 seconds
  • Memory Usage 2,282KB
  • 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
  • (1)bbcode_code
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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