for($i=0;$i<count($status);$i++)
{
$conf = array(
'source_image' => $status[$i]['full_path'],
'new_image' => $this->upload_path . '/thumbs',
'maintain_ratio' => true,
'width' => 200,
'height' => 200
);
$this->load->library('image_lib', $conf);
$this->image_lib->resize();
$this->image_lib->clear(); // complete reset
$this->image_lib->initialize($conf); // complete reset
}
.
always keep missing the last thumbnail creation cycle. when trying for($i=0;$i<=count($status);$i++). i get this notice Undefined offset
By using a for loop you are assuming that the keys of the array are contiguous, which they may not be. You are also assuming that every second level array has a full_path key, which it may not. Use foreach instead, and do an isset() check on the full_path key:
foreach ($status as $item)
{
if (!isset($item['full_path'])) continue;
$conf = array(
'source_image' => $item['full_path'],
'new_image' => $this->upload_path . '/thumbs',
'maintain_ratio' => true,
'width' => 200,
'height' => 200
);
$this->load->library('image_lib', $conf);
$this->image_lib->resize();
$this->image_lib->clear(); // complete reset
$this->image_lib->initialize($conf); // complete reset
}
try this:
$this->load->library('image_lib');
$stat = array_values($status);
for($i=0;$i<count($stat);$i++)
{
$conf = array(
'source_image' => $stat[$i]['full_path'],
'new_image' => $this->upload_path . '/thumbs',
'maintain_ratio' => true,
'width' => 200,
'height' => 200
);
$this->image_lib->initialize($conf); // complete reset
$this->image_lib->resize();
}
Related
i am trying to upload two images ("image" and "coverimage") at same time with thumbnail but second code/"image"
not creating thumbnail and not uploading to folder,First Code/"coverimage" working properly but "image" not creating thumbnail
Where i am wrong ? Here is my code
//uploading image ( working fine and creating thumbnail)
if( isset( $_FILES['CoverImage'] ) ){
if (file_exists($_FILES['CoverImage']['tmp_name']) || is_uploaded_file($_FILES['CoverImage']['tmp_name']))
{
$filenames = time() . uniqid(rand()) . $_FILES['CoverImage']['name'];
move_uploaded_file($_FILES["CoverImage"]["tmp_name"], "ShopCoverImage/" . $filenames);
$source_paths = $_SERVER['DOCUMENT_ROOT'] . '/ShopCoverImage/' . $filenames;
$target_paths = $_SERVER['DOCUMENT_ROOT'] . '/ShopCoverImage/thumb/';
$config_manips = array(
'image_library' => 'gd2',
'source_image' => $source_paths,
'new_image' => $target_paths,
'maintain_ratio' => FALSE,
'create_thumb' => TRUE,
'thumb_marker' => '',
'width' => 100,
'height' => 100
);
$this->load->library('image_lib', $config_manips);
if (!$this->image_lib->resize()) {
$error= $this->image_lib->display_errors();
return $error;
}
else
{
$saveArr['CoverImage'] = $filenames;
}
$this->image_lib->clear();
}
}
//image uploading ( not creating thumbnail)
if( isset( $_FILES['image'] ) ){
if (file_exists($_FILES['image']['tmp_name']) || is_uploaded_file($_FILES['image']['tmp_name']))
{
$filename = time();
$filename = time() . uniqid(rand()) . $_FILES['image']['name'];
move_uploaded_file($_FILES["image"]["tmp_name"], "Profile/" . $filename);
$source_path = $_SERVER['DOCUMENT_ROOT'] . '/Profile/' . $filename;
$target_path = $_SERVER['DOCUMENT_ROOT'] . '/Profile/thumb/';
$config_manip = array(
'image_library' => 'gd2',
'source_image' => $source_path,
'new_image' => $target_path,
'maintain_ratio' => FALSE,
'create_thumb' => TRUE,
'thumb_marker' => '',
'width' => 100,
'height' => 100
);
$this->load->library('image_lib', $config_manip);
if (!$this->image_lib->resize()) {
$error= $this->image_lib->display_errors();
return $error;
}
else
{
//$saveArr['image'] = $filename;
}
$this->image_lib->clear();
}
}
Please use below code :
Remove from second upload image code
$this->load->library('image_lib', $config_manip);
and replace with below code
$this->image_lib->initialize($config_manip);
I am trying to create thumbnail(resize) of uploaded image using codeigniter,
But image is not uploaded in server/folder,Here is my code, Where I went wrong ?
if (isset($_FILES['image'])) {
if (file_exists($_FILES['image']['tmp_name']) || is_uploaded_file($_FILES['image']['tmp_name'])) {
$filename = time() . uniqid(rand()) . $_FILES['image']['name'];
move_uploaded_file($_FILES["image"]["tmp_name"], "vendorProfile/" . $filename);
$saveArr['image'] = $filename;
$this->load->library('image_lib');
$source_paths = base_url() . 'vendorProfile/' . $filename;
$source_path = $_SERVER['DOCUMENT_ROOT'] . '/Profile/vendorProfile/' . $filename;
$target_path = $_SERVER['DOCUMENT_ROOT'] . '/Profile/vendorProfile/thumb';
$config_manip = array(
'image_library' => 'gd2',
'source_image' => $source_path,
'new_image' => $target_path,
'maintain_ratio' => TRUE,
'create_thumb' => TRUE,
'thumb_marker' => '_thumb',
'width' => 150,
'height' => 150
);
$this->load->library('image_lib', $config_manip);
if (!$this->image_lib->resize()) {
echo $this->image_lib->display_errors();
} else {
echo "image is uploaded";
}
$this->image_lib->clear();
}
}
You just look at the file path which you pass on $config_manip array where you need to pass file path without Http or https PHP don't accept Http. So if in your case your file struct like something this
-
application
system
image_folder <----
Then you just pass like something this
$config_manip = array(
'image_library' => 'gd2',
'source_image' => './image_folder/'.$file_name,
'new_image' => './thumb_folder/'.$target_path,
'maintain_ratio' => TRUE,
'create_thumb' => TRUE,
'thumb_marker' => '_thumb',
'width' => 150,
'height' => 150
);
If you are using the ubuntu server you need to give permission for that folder to upload the file/image.
if (!file_exists($target_path)) {
if (!mkdir($target_path, 0777, true)) {
chmod($target_path, 0777);
}
}
I am working on a codeigniter project where users can create profiles and upload their images..I want to create an image thumbnail (200 X 200) and save it in the directory. My code works perfectly as it uploads the image and also stores the image name in database but the problem is it does not resize the image..I want to resize all images (200 X 200) and then store them in directory.
This is controller
public function FunctionName()
{
$fname = ucwords($this->input->post('fname'));
$lname = ucwords($this->input->post('lname'));
$prof_pic = $_FILES['profile_pic']['name'];
$config = array ('upload_path' => './images/students/',
'allowed_types' => "jpeg|jpg|png",
'overwrite' => TRUE,
'file_name' => $Maxtype."_".$fname."_".$lname,
'remove_spaces' => TRUE,
'image_library' => gd2,
'source_image' => $prof_pic,
'new_image' => './images/students/',
'maintain_ratio' => TRUE,
'height' => 200,
'width' => 200
);
$this->load->library('upload', $config);
$this->upload->do_upload('profile_pic');
$extension = pathinfo($prof_pic);
$ext = $extension['extension'];
$image = $config['file_name'].".".$ext;
$data = array('std_fname' => $fname,
'std_lname' => $lname,
'profile_pic' => $image
);
}
I'm currently struggling with the auto resizing of an oversize image.
I want 2 things to happen, #1 that the image automatically resizes to the given dimensions and 2 that it generates a thumb that can be used for example in the navbar etc..
This is the current code I got
EDITED Today
// avatar upload
if (isset($_FILES['userfile']['name']) && !empty($_FILES['userfile']['name'])) {
function __construct(){
parent::__construct();
//return the full path of the directory
//make sure these directories have read and write permessions
$this->original_path = realpath(APPPATH.'../uploads/original');
$this->resized_path = realpath(APPPATH.'../uploads/resized');
$this->thumbs_path = realpath(APPPATH.'../uploads/thumbs');
}
$this->load->library('image_lib');
$config = array(
'allowed_types' => 'jpg|jpeg|gif|png', //only accept these file types
'max_size' => 2048, //2MB max
'upload_path' => $this->original_path, //upload directory
'width' => 250,
'height' => 250
);
$this->load->library('upload', $config);
$image_data = $this->upload->data(); //upload the image
//your desired config for the resize() function
$config = array(
'source_image' => $image_data['full_path'], //path to the uploaded image
'new_image' => $this->resized_path, //path to
'maintain_ratio' => true,
'width' => 128,
'height' => 128
);
//this is the magic line that enables you generate multiple thumbnails
//you have to call the initialize() function each time you call the resize()
//otherwise it will not work and only generate one thumbnail
$this->image_lib->initialize($config);
$this->image_lib->resize();
$config = array(
'source_image' => $image_data['full_path'],
'new_image' => $this->thumbs_path,
'maintain_ratio' => true,
'width' => 36,
'height' => 36
);
//here is the second thumbnail, notice the call for the initialize() function again
$this->image_lib->initialize($config);
$this->image_lib->resize();
}
But Now I get these errors in browser
https://gyazo.com/4ec7360df1d3cc2703d19941583982fd
Any help would be appreciated
I am pretty new to codeigniter and just building my first application with it, but I am abit stumped when it comes to generating a thumbnail from an image.
The image uploads correctly but the thumb isnt generating and I am getting no errors :(
I hope someone can give me a helping hand, chances are I am just being a tit and its something really simple like mis spelling var.
Heres the code for my image model:
<?php
class Image_model extends CI_Model {
var $image_path;
function Image_model(){
parent::__construct();
$this->image_path = realpath(APPPATH.'../'.$this->config->item('dir_dynamic_images'));
}
function do_upload(){
$config = array(
'allowed_types' => "jpeg|gif|jpg|png",
'upload_path' => $this->image_path,
'max_size' => 2000
);
$this->load->library('upload', $config);
$this->upload->do_upload();
$image_data = $this->upload->data();
$config = array(
'source_image' => $image_data['full_path'],
'new_image' => $this->image_path . '/thumbs',
'maintain_ratio' => true,
'width' => 200,
'height' => 200
);
echo $config['new_image'];
$this->load->library('image_lib', $config);
$this->image_lib->resize();
}
}
?>
I think you need to set the create_thumb parameter to true and specify the image library-
$config = array(
'image_library' => 'gd2',
'source_image' => $image_data['full_path'],
'create_thumb' => true,
'new_image' => $this->image_path . '/thumbs',
'maintain_ratio' => true,
'width' => 200,
'height' => 200
);
try finding the error with -
if(!$this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
This piece of code is working for me. Hopefully it will works for you . you can also check the image manipulation helper in codeigniter. Don'f forget to initialize the config.
$config['image_library'] = 'imagemagick';
$config['library_path'] = '/usr/X11R6/bin/';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['x_axis'] = '100';
$config['y_axis'] = '60';
$this->image_lib->initialize($config);
if ( ! $this->image_lib->crop())
{
echo $this->image_lib->display_errors();
}