Opened 9 years ago
Closed 9 years ago
#28561 closed defect (bug) (invalid)
thumbnail when upload image
Reported by: |
|
Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 3.9.1 |
Component: | Media | Keywords: | |
Focuses: | Cc: |
Description (last modified by )
Stop working after updates;
One of our staff member report to me bug: problem with images in IE11.
I didn't notice that in firefox or chrome because images was resize to width and height set in img tag => <img src="some image" width="300" height="180" alt.. >
but physical size of image is different the image have 1900 pixels width and 1028 pixels height, and was weight approx 550kb, its really slow down a website when we listing wordpress posts with feature image (which is so big right now) and our case study.
I fix this by adding own resizing function and simply class, I declare in blog
instead of:
the_post_thumbnail('medium', array('class' => 'media-object'));
this:
$get_url = wp_get_attachment_url( get_post_thumbnail_id($post->ID)); $local_small = Stefano_Resizer($get_url,300, 170);
and in my theme functions.php:
/RESIZE IMAGE class ResizeThat { var $image; var $image_type; function load($filename) { $image_info = getimagesize($filename); $this->image_type = $image_info[2]; if ($this->image_type == IMAGETYPE_JPEG) { $this->image = imagecreatefromjpeg($filename); } elseif ($this->image_type == IMAGETYPE_GIF) { $this->image = imagecreatefromgif($filename); } elseif ($this->image_type == IMAGETYPE_PNG) { $this->image = imagecreatefrompng($filename); } } function save($filename, $image_type = IMAGETYPE_JPEG, $compression = 64, $permissions = null) { if ($image_type == IMAGETYPE_JPEG) { imagejpeg($this->image, $filename, $compression); } elseif ($image_type == IMAGETYPE_GIF) { imagegif($this->image, $filename); } elseif ($image_type == IMAGETYPE_PNG) { imagepng($this->image, $filename); } if ($permissions != null) { chmod($filename, $permissions); } } function output($image_type = IMAGETYPE_JPEG) { if ($image_type == IMAGETYPE_JPEG) { imagejpeg($this->image); } elseif ($image_type == IMAGETYPE_GIF) { imagegif($this->image); } elseif ($image_type == IMAGETYPE_PNG) { imagepng($this->image); } } function getWidth() { return imagesx($this->image); } function getHeight() { return imagesy($this->image); } function resizeToHeight($height) { $ratio = $height / $this->getHeight(); $width = $this->getWidth() * $ratio; $this->resize($width, $height); } function resizeToWidth($width) { $ratio = $width / $this->getWidth(); $height = $this->getheight() * $ratio; $this->resize($width, $height); } function scale($scale) { $width = $this->getWidth() * $scale / 100; $height = $this->getheight() * $scale / 100; $this->resize($width, $height); } function resize($width, $height) { $new_image = imagecreatetruecolor($width, $height); imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth() , $this->getHeight()); $this->image = $new_image; } } function get_basename($filename) { return preg_replace('/^.+[\\\\\\/]/', '', $filename); } function Stefano_Resizer($get_remote,$get_width, $get_height) { $full_path = getcwd(); $ar = explode("wp-", $full_path); $root = $ar[0]; $get_local = '/wp-content/uploads/images/'.get_basename($get_remote); $get_local_file = $root .'/wp-content/uploads/images/'.get_basename($get_remote); $image = new ResizeThat(); if(file_exists ($get_local_file)){ return $get_local; } else { $image->load($get_remote); $image->resizeToWidth($get_width); //$image->resizeToHeight($get_height); $image->save($get_local_file); return $get_local; } }
its work and make a copy of listed images into declare folder of Stefano function.
Would You fix that please?
We don't like add any functions because we use widely Wordpress and maintaining a code that way would be problematic in a future.
Btw. my head of development didn't allow to add new functionality so i try rise a problem here.
Kind regards
Stefan Oliwa
Web Developer and Clifton Group PLC.
You are gonna want to use
add_image_size()
- which will cut the additional size for you when you upload.