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);
}
}
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 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
);
}
public function converter(){
$pdf = "ci.pdf";
$this->load->library('image_lib');
$config = array(
'image_library' => 'imagemagick',
'library_path' => 'D:\Program Files\ImageMagick-6.9.3-Q16',
'source_image' => " /theme/assets/pdf".$pdf,
'new_image' => " /theme/assets/img/a.jpg",
'maintain_ratio' => true,
'width' => 980,
'quality' => '90%',
);
$this->image_lib->initialize( $config );
if (! $this->image_lib->resize()) {
$error_msg = $this->image_lib->display_errors();
print_r($error_msg);
}
else {
echo "Done";
}
}
Hi friends i'm trying to convert pdf file to jpg but while executing the controller it replies a message .
The path to the image is not correct. Image processing failed. Please
verify that your server supports the chosen protocol and that the path
to your image library is correct.
As i'm new to Codeigniter I was not able to achieve the result .could any one help me how to execute this code .
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();
}
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();
}