0

Je souhaite appliquer un filigrane sur plusieurs images après le téléchargement. En ce moment, les images sont en train de télécharger, mais tous sont sans filigrane et je veux aussi réduire la qualité de l'image de téléchargement.Codeigniter Image filigrane à l'aide de la bibliothèque d'images

public function do_upload() 
{  
     $this->load->library('upload'); 

     $name_array = array(); 
     $files = $_FILES; 
     $cpt = count($_FILES['userfile1']['name']); 
     for($i=0; $i<=$cpt-1; $i++) 
     {   
      $_FILES['userfile']['name']= $files['userfile1']['name'][$i]; 
      $_FILES['userfile']['type']= $files['userfile1']['type'][$i]; 
      $_FILES['userfile']['tmp_name']= $files['userfile1']['tmp_name'][$i]; 
      $_FILES['userfile']['error']= $files['userfile1']['error'][$i]; 
      $_FILES['userfile']['size']= $files['userfile1']['size'][$i];  

      $this->upload->initialize($this->set_upload_options()); 
      if($data = $this->upload->do_upload()){ 
       $config['source_image'] = $files['userfile1']['tmp_name'][$i]; //get original image 
       $config['wm_type'] = 'overlay'; 
       $config['wm_overlay_path'] = './portfolio_img/ninja.png'; 
       $config['quality'] = 50; 
       $config['wm_vrt_alignment'] = 'bottom'; 
       $config['wm_hor_alignment'] = 'right'; 
       $this->load->library('image_lib', $config); 
       $this->image_lib->watermark(); 
      } 

       $name_array[] = $this->upload->data('file_name'); 
     } 

     return $name_array; 
} 

private function set_upload_options() 
{ 
     //upload an image options 
     $config = array(); 
     $config['upload_path'] = './portfolio_img/'; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     $config['max_size']  = '0'; 
     $config['overwrite']  = FALSE; 

     return $config; 
} 

Répondre

2

méthode de filigrane besoin chemin de l'image que vous passez tem_path l'espoir que cela fonctionne

essayer

$config['source_image'] = './portfolio_img/' . $files['userfile1']['name'][$i] 

il travaille pour moi

udate

veuillez charger la bibliothèque avant la boucle et changer source_image nom chaque fois.

$config['source_image'] = ''; 
$config['wm_type'] = 'overlay'; 
$config['wm_overlay_path'] = './portfolio_img/ninja.png'; 
$config['quality'] = 50; 
$config['wm_vrt_alignment'] = 'bottom'; 
$config['wm_hor_alignment'] = 'right'; 
$this->load->library('image_lib', $config); 

for($i=0; $i<=$cpt-1; $i++) 
{   
    $_FILES['userfile']['name']= $files['userfile1']['name'][$i]; 
    $_FILES['userfile']['type']= $files['userfile1']['type'][$i]; 
    $_FILES['userfile']['tmp_name']= $files['userfile1']['tmp_name'][$i]; 
    $_FILES['userfile']['error']= $files['userfile1']['error'][$i]; 
    $_FILES['userfile']['size']= $files['userfile1']['size'][$i];  

    $this->upload->initialize($this->set_upload_options()); 
    if($data = $this->upload->do_upload()){ 
     $config['source_image'] = './portfolio_img/' . $files['userfile1']['name'][$i] 
     $this->image_lib->initialize($config); 
     $this->image_lib->watermark(); 
    } 

    $name_array[] = $this->upload->data('file_name'); 
} 
+0

Merci à son travail .. Mais seulement le filigrane de superposition à la première image. – Shihas

+0

Bien sûr ... pourquoi pas: D – Shihas

+0

merci de toujours marquer la réponse qui vous aide. codage heureux. –