Welcome Guest, Not a member yet? Register   Sign In
Image manipulation
#1

(This post was last modified: 07-29-2017, 11:41 PM by theedo.)

Hi people! How's going?

Today I'm here to ask you something about the image manipulation. I studied it a lot, but I need help with something.
I'm making a "Change profile picture" like facebook/instagram/twitter/......and more. 

I want the image that user upload becomes smaller, not in size(width and height I mean) but in dimension. Instead: I've an image of 4mb -> it must be smaller than 4mb when the user upload on my website.

And do you have some suggestion about display the image in profile user? Instead the image has 800 as width 400 as height and my profile-box is 215w x 215h, how can I crop the image without lose anything?

I post here my actual upload function, maybe you can help me! Thank you

PHP Code:
public function changeProfilePicture(){
 
       $config['upload_path'         './uploads/images/profile/pictures/';
 
       $config['allowed_types'       'gif|jpg|png';
 
       $config['encrypt_name'        TRUE;

 
       $this->load->library('upload'$config);

 
       if (!$this->upload->do_upload('photo_input'))
 
       {
 
               $error = array('error' => $this->upload->display_errors());
 
               echo json_encode($error);
 
       }
 
       else
        
  
                $info 
$this->upload->data();
 
               $a = array(
 
                   'user_id' => $this->session->userdata('uid'),
 
                   'image' => $info['file_name']
 
               );
 
               
                $d 
= array(
 
                   'success' => TRUE
                
);
 
               
                $p 
= array(
 
                   'fail' => TRUE
                
);
 
               
                
//$data = array('upload_data' => $this->upload->data());
 
               if($this->uploadModel->addImagePicture($a)){
 
                   //$info;
 
                  $this->load->library('image_lib');
 
                   $config['image_library'] = 'gd2';
 
                   $config['source_image'] = $info['full_path'];
 
                   $config['create_thumb'] = FALSE;
 
                   $config['maintain_ratio'] = TRUE;
 
                   $config['height']    = "215";
 
                   $config['width'] = "215";
 
                   $config['new_image'] = "./uploads/images/profile/pictures/"//you should have write permission here..
 
                   $this->image_lib->initialize($config);
 
                   $this->image_lib->resize();
 
                   echo json_encode($d);
 
               } else {
 
                   exit(json_encode($p));
 
               }
 
       }
 
   

(Yes, actually I resize the image to 215h 215w, but I don't want do this because if the user click on the image, obviously, he'll see that 215x215 and not with the real dimensions)
Reply
#2

For the size of the uploaded file:

PHP Net - Get File Size

As for the profile image you would need to create a thumbnail image for it.

Do a Google search on ( CodeIgniter Thumbnail Image )
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply
#3

Thank you for the suggestion about thumbnail, I'll use this.

But, I don't need the get file size function.. I want that when an user upload an image the real image pass through a "compression" to reduce the size, some idea?
Reply
#4

You could take a look at kraken.io. or if you want to do it by yourself at tools like jpegtrans, pngcrush etc.
Reply
#5

(This post was last modified: 07-30-2017, 05:03 PM by jarmen_kell. Edit Reason: CI Forum's auto formatting bb tags mess up my pasted code )

(07-30-2017, 12:20 PM)theedo Wrote: Thank you for the suggestion about thumbnail, I'll use this.

But, I don't need the get file size function.. I want that when an user upload an image the real image pass through a "compression" to reduce the size, some idea?

there're lot's of other image manipulation lib from composers' Packagist of you feel like want to try exploring it.
but if you insist on using CI's own library. you might wanted to make it a little bit more creative.

when you'r user upload an image using CI's own File Uploading lib,
it'll return all of the information on the uploaded file image, and few of it are your uploaded image's Width and Height:
PHP Code:
<?php
$uploadedFile 
$this->upload->data();
echo 
$uploadedFile['image_width'];
echo 
$uploadedFile['image_height'];
?>

now you've got your file's original "width" and "height",
lets parse it into CI's Image Manipulation lib config init
with additional options, that is the "quality" option:
PHP Code:
<?php
$config
['image_library'] = 'gd2';
$config['maintain_ratio'] = TRUE;
$config['width' $uploadedFile['image_width'];
$config['height'] = $uploadedFile['image_height'];
$config['quality'] = '70%';  // this 'might' compress your image

$this->load->library('image_lib'$config);

$this->image_lib->resize();
?>

please CMIIW
Reply
#6

These three can effect the timing of file uploads if the file is large

Check these and change if you start to get timing errors.

session.gc_maxlifetime
max_input_time
max_execution_time


These effect the upload size.

upload_max_filesize 20M
post_max_size 20M
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply
#7

Tinypng.com for JPG and PNG lossless compression. Even supports animated PNG

Service is free up to 500 compressions per month.
Really easy to use with CodeIgniter
Reply




Theme © iAndrew 2016 - Forum software by © MyBB