2010-07-11 6 views
0

J'ai lu les documents et essayé de tout extraire des images téléchargées, mais je n'arrive pas à trouver le problème.resize() ne fonctionne pas à l'aide de la classe de manipulation d'images

Les images sont téléchargées et enregistrées correctement, mais les pouces ne le sont pas, ils échouent sans aucune sortie d'erreur. Ce est le code que je utilise:

$data = $this->upload->data(); 

$config_image['image_library'] = 'gd'; 
$config_image['source_image'] = $data['full_path']; 
$config_image['new_image'] = 'uploads/thumbs/'; 
$config_image['create_thumb'] = TRUE; 
$config_image['maintain_ratio'] = TRUE; 
$config_image['width'] = 750; 
$this->load->library('image_lib', $config_image); 

if (!$this->image_lib->resize()) 
{ 
    $this->session->set_flashdata('message', $this->image_lib->display_errors()); 
} 

, je veux aussi redimensionner les images en fonction max-width = 750, mais maintenir le rapport. Est-ce que ce que je fais est correct pour y parvenir? Merci!

Répondre

1

Je sais que c'est un peu trop tard, mais j'ai récemment eu le même problème et le résoudre en initialisant la classe.

L'exemple CodeIgniter ne fonctionne pas, vous devez charger la classe première:

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

Puis, après le réglage de la configuration dont vous avez besoin, vous initialiser la classe comme ceci:

$this->image_lib->initialize($config); 

Cette travaillé pour moi tout de suite. Je publie ceci dans le cas où quelqu'un d'autre a le même problème, alors ils le résolvent avec CodeIgniter et pas une autre bibliothèque.

0

supprimer $config_image['new_image'] = 'uploads/thumbs/'; et changer $config['image_library'] = 'gd';-$config['image_library'] = 'gd2';

le tableau de données $ Assurez-vous également que contient le chemin_complet.

+0

Désolé, cela n'a pas fonctionné. – Nacho

+0

Avez-vous des messages d'erreur? – stef

+0

Non, échoue silencieusement. – Nacho

1

Peut-être les deux, largeur et hauteur doivent être spécifiés? Essayez-le simplement avec une hauteur fixe (et effectuez une mise à l'échelle sensible au format dans une seconde étape).

Pour maintenir le rapport, le simple, on calcule d'abord le rapport d'aspect de l'image, puis calculer la hauteur cible:

$target_width = 750; 
$image_aspect_ratio = $image_width/$image_height; 
$target_height = $target_width/$image_aspect_ratio; 

Vous pouvez déduire cela de mathématiques simples: r = w/h. Donc, w = r * h (= la largeur cible, si vous avez une hauteur fixe) et h = w/r (= la hauteur cible, si vous avez une largeur fixe).

1

Vous devez absolument utiliser GD2.

La classe de manipulation d'images de CI est parfois un peu capricieuse. Si vous ne parvenez pas à faire fonctionner les choses, consultez le timthumb. C'est un petit script php 1 fichier qui redimensionne les images à la volée et utilise un système de cache. Vous venez de passer les paramètres requis à travers l'attribut src de votre tag d'image. Très facile, fonctionne très bien et beaucoup moins d'un mal de tête que la classe de manipulation d'image de CI.

+0

Ouais, je le sais et j'envisage vraiment ça puisque ça ne marche pas. – Nacho

+0

Eh bien, je marque cela comme correct, puisque je me suis retrouvé avec le timbre tout-puissant :) – Nacho

0

Question simple, les permissions de fichier sont-elles correctes? Une autre astuce serait de définir la journalisation des erreurs CI au plus haut niveau et voir si elle produit quelque chose.

+0

Eh bien, je pense, mais je ne suis pas sûr à 100%. Je vais vérifier cela minutieusement. – Nacho