Heya all, I have a problem regarding the Monotone theme (http://monotonedemo.wordpress.com/). I've been struggling for hours to try to get it to display the images properly, only to find out that it's due to GoDaddy (my host) blocking fopen. So now I'm trying to find a way to work around this by modifying the code so that it doesn't try to resize the images, and keeps the blog's width at 560 regardless of the image being horizontal or vertical. Then I can just resize the images myself and avoid all these shenanigans.
Here are the contents of the functions.php file, which I assume is the one I need to modify. I tried just changing MAX_WIDTH to 560, but unfortunately that didn't work. Any ideas would be appreciated, I'm really just poking around in the dark here. Thanks!
<?php
// define widths
define('MIN_WIDTH', 560);
define('MAX_WIDTH', 840);
function partial($file) { include $file.'.php'; }
// filters and actions
add_action('wp_head', header_function);
add_filter('the_content',image_scrape);
add_action('publish_post', image_setup);
function header_function() {
global $vertical;
if(!is_single() && is_home() && !is_archive()) query_posts("what_to_show=posts&posts_per_page=1");
if(!is_archive() && !is_search()) : ?>
<style type="text/css" media="screen">
<?php
while ( have_posts() ) : the_post();
// ececute the specific stylesheet
print_stylesheet();
// determine if an image is vertical or not
if(is_vertical(the_image_url(true))) { $vertical = true; }
endwhile; rewind_posts(); ?>
</style>
<?php endif;
}
// remove image tag from post_content for display
function image_scrape($entry) {
// don't scrape the image for the feed
if (is_feed()) { return $entry; }
//remove image tag
$entry = preg_replace('/<img [^>]*src=(\"|\').+?(\1)[^>]*\/*>/','', $entry); /* */
//remove any empty tags left by the scrape.
$entry = str_replace('<p> </p>', '', $entry);
$entry = preg_replace( '|<([a-z]+)[^>]*>\s*</\1>|i', '', $entry );
$entry = preg_replace( '|<([a-z]+)[^>]*>\s*</\1>|i', '', $entry );
$entry = preg_replace( '|<([a-z]+)[^>]*>\s*</\1>|i', '', $entry );
return $entry;
}
// this resets post meta
function reset_colors($post) {
delete_post_meta($post->ID, 'image_md5');
delete_post_meta($post->ID, 'image_url');
delete_post_meta($post->ID, 'image_size');
delete_post_meta($post->ID, 'image_color_base');
delete_post_meta($post->ID, 'image_colors');
delete_post_meta($post->ID, 'image_colors_bg');
delete_post_meta($post->ID, 'image_colors_fg');
}
function image_setup($postid) {
global $post;
$post = get_post($postid);
// get url
if ( !preg_match('/<img ([^>]*)src=(\"|\')(.+?)(\2)([^>\/]*)\/*>/',$post->post_content, $matches) )
return false;
// url setup
$post->image_url = $matches[3];
if ( !$post->image_url = preg_replace('/\?w\=[0-9]+/','', $post->image_url) )
return false;
if ( 0 !== strpos( $post->image_url,'http://' ) )
$post->image_url = 'http://' . $_SERVER['HTTP_HOST'] . '/' . ltrim( $post->image_url, '/' );
$post->image_url = clean_url( $post->image_url, 'raw' );
$previous_md5 = get_post_meta($post->ID, 'image_md5', true);
$previous_url = get_post_meta($post->ID, 'image_url', true);
if ( md5($post->image_tag) != $previous_md5 || $post->image_url != $previous_url ) {
reset_colors($post);
add_post_meta($post->ID, 'image_url', $post->image_url);
add_post_meta($post->ID, 'image_md5', md5($post->image_tag));
//image tag setup
$extra = $matches[1].' '.$matches[5];
$extra = preg_replace('/width=(\"|\')[0-9]+(\1)/','', $extra);
$extra = preg_replace('/height=(\"|\')[0-9]+(\1)/','', $extra);
$width = (is_vertical($post->image_url)) ? MIN_WIDTH : MAX_WIDTH;
delete_post_meta($post->ID, 'image_tag');
add_post_meta($post->ID, 'image_tag', '<img src="'.$post->image_url.'?w='.$width.'" '.$extra.' />');
// get colors
get_all_colors($post);
return false;
}
return true;
}
function is_vertical($url) {
if(preg_match('/(jpg|jpeg|jpe|JPEG|JPG|png|PNG|gif|GIF)/',$url)) {
global $post;
$size = get_post_meta($post->ID, 'image_size', true);
if ( !$size ) {
$size = getimagesize($url);
add_post_meta($post->ID, 'image_size', $size);
}
$post->image_width = $size[0];
if($size) {
if($size[0] == $size[1]) return true;
if($size[0] < $size[1]) return true;
if($size[0] < MIN_WIDTH) return true;
}
return false;
}
return false;
}
function the_image($return = null) {
global $post;
$tag = get_post_meta($post->ID, 'image_tag', true);
if(!$tag) {
image_setup($post->ID);
$tag = get_post_meta($post->ID, 'image_tag', true);
}
$tag = preg_replace('/width=(\"|\')[0-9]+(\1)/','', $tag);
$tag = preg_replace('/height=(\"|\')[0-9]+(\1)/','', $tag);
if($return) return $tag; /*else*/ echo $tag;
}
function the_image_url($return = null) {
global $post;
$tag = get_post_meta($post->ID, 'image_url', true);
if(!$tag) {
image_setup($post->ID);
$tag = get_post_meta($post->ID, 'image_url', true);
}
if($return) return $tag; /*else*/ echo $tag;
}
function the_thumbnail() {
global $post;
$src = preg_replace('/\?w\=[0-9]+/','?w=125', the_image(true));
$src = '<div class="image thumbnail">'.$src.'</div>';
echo $src;
}
function get_all_colors($post) {
//pull from DB
$base->bg = get_post_meta($post->ID, 'image_colors_bg',true);
$base->fg = get_post_meta($post->ID, 'image_colors_fg',true);
// show return variable if full
if($base->bg != '' && $base->fg != '') {
return $base;
} else {
// else, get the colors
include_once("csscolor.php");
$base = new CSS_Color(base_color($post));
//set bg
$bg = $base->bg;
//set fg
$fg = $base->fg;
if( add_post_meta($post->ID, 'image_colors_bg', $bg, false)
&& add_post_meta($post->ID, 'image_colors_fg', $fg, false)) return $base;
}
}
function print_stylesheet() {
global $post;
$color = get_all_colors($post);
?>
#page {
background-color:#<?php echo $color->bg['-1']; ?>;
color:#<?php echo $color->fg['-2']; ?>;
}
a,a:link, a:visited {
color: #<?php echo $color->fg['-3']; ?>;
}
a:hover, a:active {
color: #<?php echo $color->bg['+2']; ?>;
}
h1, h1 a, h1 a:link, h1 a:visited, h1 a:active {
color: #<?php echo $color->fg['0']; ?>;
}
h1 a:hover {
color:#<?php echo $color->bg['+2']; ?>;
}
.navigation a, .navigation a:link,
.navigation a:visited, .navigation a:active {
color: #<?php echo $color->fg['0']; ?>;
}
h1:hover, h2:hover, h3:hover, h4:hover, h5:hover h6:hover,
.navigation a:hover {
color:#<?php echo $color->fg['-2']; ?>;
}
.description,
h3#respond,
#comments,
h2, h2 a, h2 a:link, h2 a:visited, h2 a:active,
h3, h3 a, h3 a:link, h3 a:visited, h3 a:active,
h4, h4 a, h4 a:link, h4 a:visited, h4 a:active,
h5, h5 a, h5 a:link, h5 a:visited, h5 a:active,
h6, h6 a, h6 a:link, h6 a:visited, h6 a:active {
/* Use the corresponding foreground color */
color: #<?php echo $color->fg['-1']; ?>;
border-color: #<?php echo $color->bg['+3']; ?>;
border-bottom: #<?php echo $color->bg['+3']; ?>;
}
#postmetadata, #commentform p, .commentlist li, #post, #postmetadata .sleeve, #post .sleeve,
#content {
color: #<?php echo $color->fg['-2']; ?>;
border-color: #<?php echo $color->fg['-2']; ?>;
} <?php
}
function base_color($post) {
$url = get_post_meta($post->ID, 'image_url', true);
// get the image name
$imgname = trim($url);
// create a working image
$im = imagecreatefromjpeg($imgname);
$height = imagesy($im);
$top = $height - 400;
$width = imagesx($im);
// sample five points in the image, based on rule of thirds and center
$rgb = array();
$topy = round($height / 3);
$bottomy = round(($height / 3) * 2);
$leftx = round($width / 3);
$rightx = round(($width / 3) * 2);
$centery = round($height / 2);
$centerx = round($width / 2);
$rgb[1] = imagecolorat($im, $leftx, $topy);
$rgb[2] = imagecolorat($im, $rightx, $topy);
$rgb[3] = imagecolorat($im, $leftx, $bottomy);
$rgb[4] = imagecolorat($im, $rightx, $bottomy);
$rgb[5] = imagecolorat($im, $centerx, $centery);
// extract each value for r, g, b
$r = array();
$g = array();
$b = array();
$hex = array();
$ct = 0; $val = 50;
// process points
for ($i = 1; $i <= 5; $i++) {
$r[$i] = ($rgb[$i] >> 16) & 0xFF;
$g[$i] = ($rgb[$i] >> 8) & 0xFF;
$b[$i] = $rgb[$i] & 0xFF;
// find darkest color
$tmp = $r[$i] + $g[$i] + $b[$i];
if ($tmp < $val) {
$val = $tmp;
$ct = $i;
}
$hex[$i] = rgbhex($r[$i],$g[$i],$b[$i]);
}
return $hex[3];
}
function rgbhex($red, $green, $blue) { return sprintf('%02X%02X%02X', $red, $green, $blue); }
?>