Les meilleures pratiques pour les images avec CodeIgniter: Génération de pouces ou Redimensionnement à la volée

StackOverflow https://stackoverflow.com/questions/2739513

  •  02-10-2019
  •  | 
  •  

Question

Je sais qu'il ya eu beaucoup écrit sur la vignette génération et comme avec CI, mais je voulais expliquer ce que je l'ai fait et voir quel genre de conseils les meilleures pratiques que je pouvais trouver. Voici mon histoire ...

À l'heure actuelle, j'ai un site qui permet aux utilisateurs de télécharger des collections de photos à des projets qu'ils ont créés après la première création d'un compte. Lors de la création de compte, le site génère des dossiers pour les utilisateurs de la façon suivante pour chacun des cinq projets définis au préalable:

/ étudiants / nom d'utilisateur / project_num / images / pouces /

(C'est-à-dire que, dans un pré-élèves ont créé le dossier, le nom d'utilisateur, project_num, des images et des dossiers sont créés pouces récursive cinq fois.)

Quand un utilisateur télécharge des images à un projet, j'ai un contrôleur de galerie qui télécharge les images complètes dans les images dossier pour le project_num, et crée ensuite une petite miniature qui maintient son rapport. Jusqu'à présent, si bon.

Sur la page d'index du site, où ces vignettes et des images sont affichées, j'ai eu un peu d'une défaillance du cerveau, en pensant que je pouvais tout simplement sortir le l'image lors du redimensionnement via css pour une image « taille moyenne » qui conduirait à l'image en taille réelle lorsque vous cliquez dessus.

(Pour être clair, le chemin est: Cliquez sur thumbnail-> Charger mise à l'échelle d'image pleine grandeur (taille moyenne) via ajax dans une zone d'affichage ci-dessus thumbs-> Cliquez sur image- de taille moyenne> Charger l'image en taille réelle via la visionneuse, ou quelque chose de cette nature.)

J'ai tout travail à ce point, à l'exception, comme on pourrait l'imaginer, le redimensionnement des images en taille réelle avec css ne maintient pas le rapport d'aspect pour les pouces, ce qui signifie que je dois trouver la meilleure façon de redimensionner ces derniers.

En pensant à ce sujet, je me suis dit que j'avais deux options:

  1. Je pourrais redimensionner l'image à la volée lorsque l'utilisateur clique sur une vignette pour charger l'image de taille moyenne via ajax. (J'ai une méthode « get_image ($ url) » dans mon contrôleur galerie qui charge simplement une vue avec une balise d'image et la source d'image qui lui est passé, etc.) Je pensais que je pouvais l'envoyer d'abord à mon modèle de galerie, Redimensionner là à la volée, et l'envoyer à la vue. Le problème que je vais avoir est que le redimensionner à la volée et en écho dehors me donne les données d'images brutes (Je suis désolé, je ne sais pas que ce soit le bon terme). Je l'ai essayé d'utiliser data_uris pour formater les données brutes en echoable quelque chose, mais sans succès. Cette méthode est-il possible?

  2. La deuxième option que je devais considérer générer une seconde vignette de taille moyenne lorsque l'utilisateur télécharge l'image avec set maintain_ratio true. Cette méthode est un peu moins idéal, étant donné que lors de la fourniture d'un moyen pour l'utilisateur de supprimer leurs projets, je vais avoir besoin de scanner pour une série supplémentaire d'images à supprimer. Pas très grave, sans aucun doute, mais quelque chose je me suis dit pourrait être évité en générant l'image de taille moyenne à la volée.

J'espère avoir été clair dans mes explications, si longue haleine! Je suis très curieux de voir ce que les gens ont des suggestions sur la meilleure façon de gérer cela.

Une grande partie grâce à la lecture, et des suggestions sont! Très apprécié

Steve K.

Était-ce utile?

La solution

Vous ne voulez pas faire quelque chose aussi difficile que le redimensionnement informatiquement une image plus d'une fois pour chaque image. C'est trop cher.

Lorsque votre visiteur télécharge une image, il suffit de redimensionner deux fois. Faire un pouce, et faire le pouce moyen. Je serais probablement aussi garder une trace de toutes les images téléchargées dans un endroit de table de base de données avec project_id et user_id comme clés étrangères. Ils vous éviteront d'avoir à « scan » aux images de suppression. Vous savez où ils sont.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top