Hace unos días tenía que hacer un sistema de administración donde en unos de sus módulos el cliente tenía que ser capaz de subir al servidor las imágenes que le correspondían a una serie de franquicias y luego en la web cuando seleccionara cada una de las franquicias debían aparecer estas imágenes con unas dimensiones determinadas. Habían dos tipos de imágenes, una era un Thumbnail que representaba a la franquicia y el resto eran imágenes que compondrían una galería.
Como el cliente tendría la libertad para subir cualquier imagen (sin importar sus dimensiones o peso) y no tenía experiencia con ningún software de edición de bitmaps, decidí que este trabajo debía realizarse desde el servidor.
Enseguida busqué en la web para ver si existían clases de edición de imágenes que utilizaran las funciones de php para redimensionar las mismas y me encontré con una enorme número de ellas, la mayoría trabajaba con las funciones natas de php, pero no tenían en cuenta el formato de la imagen y siempre guardaban un jpg (aunque el formato original no fuera este), esto provocaba en muchos casos que la imagen resultante fuera un cuadro negro (sobre todo con formatos gif).
Por otro lado ninguna de estas clases tenía un método que permitiera hacer un recorte de la imagen a las dimensiones que yo deseara sin variar las proporciones visuales de la imagen original, y esto me era imprescindible para generar automáticamente los thumbnails. Así que me di a la tarea de elaborar una clase que permitiera redimensionar las imágenes y crear los thumbnails sin variar la proporción visual de estas. El resultado fue el siguiente:
Fichero thumb.php
Código :
<?php class thumb { var $image; var $type; var $width; var $height; //---Método de leer la imagen function loadImage($name) { //---Tomar las dimensiones de la imagen $info = getimagesize($name); $this->width = $info[0]; $this->height = $info[1]; $this->type = $info[2]; //---Dependiendo del tipo de imagen crear una nueva imagen switch($this->type){ case IMAGETYPE_JPEG: $this->image = imagecreatefromjpeg($name); break; case IMAGETYPE_GIF: $this->image = imagecreatefromgif($name); break; case IMAGETYPE_PNG: $this->image = imagecreatefrompng($name); break; } } //---Método de guardar la imagen function save($name, $quality = 100) { //---Guardar la imagen en el tipo de archivo correcto switch($this->type){ case IMAGETYPE_JPEG: imagejpeg($this->image, $name, $quality); break; case IMAGETYPE_GIF: imagegif($this->image, $name); break; case IMAGETYPE_PNG: $pngquality = floor(($quality - 10) / 10); imagepng($this->image, $name, $pngquality); break; } } //---Método de mostrar la imagen sin salvarla function show() { //---Mostrar la imagen dependiendo del tipo de archivo switch($this->type){ case IMAGETYPE_JPEG: imagejpeg($this->image); break; case IMAGETYPE_GIF: imagegif($this->image); break; case IMAGETYPE_PNG: imagepng($this->image); break; } } //---Método de redimensionar la imagen sin deformarla function resize($value, $prop){ //---Determinar la propiedad a redimensionar y la propiedad opuesta $prop_value = ($prop == 'width') ? $this->width : $this->height; $prop_versus = ($prop == 'width') ? $this->height : $this->width; //---Determinar el valor opuesto a la propiedad a redimensionar $pcent = $value / $prop_value; $value_versus = $prop_versus * $pcent; //---Crear la imagen dependiendo de la propiedad a variar $image = ($prop == 'width') ? imagecreatetruecolor($value, $value_versus) : imagecreatetruecolor($value_versus, $value); //---Hacer una copia de la imagen dependiendo de la propiedad a variar switch($prop){ case 'width': imagecopyresampled($image, $this->image, 0, 0, 0, 0, $value, $value_versus, $this->width, $this->height); break; case 'height': imagecopyresampled($image, $this->image, 0, 0, 0, 0, $value_versus, $value, $this->width, $this->height); break; } //---Actualizar la imagen y sus dimensiones $info = getimagesize($name); $this->width = imagesx($image); $this->height = imagesy($image); $this->image = $image; } //---Método de extraer una sección de la imagen sin deformarla function crop($cwidth, $cheight, $pos = 'center') { //---Dependiendo del tamaño deseado redimensionar primero la imagen a uno de los valores if($cwidth > $cheight){ $this->resize($cwidth, 'width'); }else{ $this->resize($cheight, 'height'); } //---Crear la imagen tomando la porción del centro de la imagen redimensionada con las dimensiones deseadas $image = imagecreatetruecolor($cwidth, $cheight); switch($pos){ case 'center': imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight); break; case 'left': imagecopyresampled($image, $this->image, 0, 0, 0, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight); break; case 'right': imagecopyresampled($image, $this->image, 0, 0, $this->width - $cwidth, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight); break; case 'top': imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), 0, $cwidth, $cheight, $cwidth, $cheight); break; case 'bottom': imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), $this->height - $cheight, $cwidth, $cheight, $cwidth, $cheight); break; } $this->image = $image; } } ?>
Los métodos de la clase son los siguientes:
Código :
// Lee la imagen desde la ruta especificada loadImage($name:string) // Guarda la imagen en la ruta especificada y con una calidad de 0 a 100 definida por el usuario (máxima calidad por defecto) save($name:string, $quality:int = 100) // Muestra la imagen en la página sin guardarla previamente show() // Redimensiona la imagen en ancho o alto manteniendo sus proporciones // $prop puede tomar los valores de "width" o "height" resize($value:int, $prop:string) // Crea un thumbnail de la imagen con las medidas especificadas y manteniendo las proporciones visuales de la imagen intactas // $pos puede tomar los valores de "left", "top", "right", "bottom" o "center" crop($cwidth:int, $cheight:int, $pos:string)
Veamos un ejemplo concreto, aquí tenemos una imagen de 550 x 413 píxeles:
Vamos a crear una versión de la misma con un ancho de 100 píxeles:
fichero image_width_100.php
Código :
<? include_once('thumb.php'); $mythumb = new thumb(); $mythumb->loadImage('http://img43.imageshack.us/img43/3022/finalfantasyn.jpg'); $mythumb->resize(100, 'width'); $mythumb->show(); ?>
El resultado es el siguiente (en este momento estoy leyendo el php de arriba como una imagen) de la siguiente manera:
Código :
echo '<img src="image_width_100.php"/>';
Ejemplo de imagen con 100 píxeles de ancho
De la misma manera el siguiente link es la misma imagen con 100 píxeles de alto:
Ejemplo de imagen con 100 píxeles de alto
Y por último un crop de la imagen a 100 x 100 píxeles (igual a los avatares de aquí de la página):
Código :
<? include_once('thumb.php'); $mythumb = new thumb(); $mythumb->loadImage('http://img43.imageshack.us/img43/3022/finalfantasyn.jpg'); // Como el rostro del personaje está a la derecha le especifico el parámetro $pos en "right" // Si este valor es obviado el crop se hará del centro de la imagen $mythumb->crop(100, 100, 'right'); $mythumb->show(); ?>
Ejemplo de thumbnail a 100 x 100
Esta clase es muy util para los avatares de los foros, simpre se le advierte al usuario que debe subir una imagen de unas dimensiones específicas, pero los usuarios muchas veces no leen las reglas del foro o simplemente lo hacen por desconocimiento y entonces los avatares atentan contra el diseño del foro pues la imagen sale a su tamaño original. Podríamos utilizar esta clase para crear versiones de los thumbnails al tamaño que especifiquemos una vez que el usuario suba su imagen, de lo contrario hacer una versión al vuelo de esta imagen con las dimensiones que deseemos.
Espero que les sea de ayuda.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Zguillez el 23 de Mayo de 2009
Por elchininet el 24 de Mayo de 2009
Código :
De lo contrario el crop no se realiza bien en las imágenes verticales.
Muchas gracias.
Por LongeVie el 24 de Mayo de 2009
Por salotronic el 24 de Mayo de 2009
function hacerThumb($imagen)
{
$img = new Imagick($imagen);
$w= $img -> getImageWidth();
$h= $img -> getImageHeight();
$maxWidth = 80; $maxHeight = 90;
$fitbyWidth = (($maxWidth/$w)<($maxHeight/$h)) ?true:false;
if($fitbyWidth)
{
$img->thumbnailImage($maxWidth, 0, false);
$img->writeImage($imagen);
}
else
{
$img->thumbnailImage(0, $maxHeight, false);
$img->writeImage($imagen);
}
}
Por elchininet el 24 de Mayo de 2009
Ya que en mi caso era imprescindible, si alguien necesita al igual que yo una clase que no requiera de instalación, esta le puede servir. Además la clase imageMagik antes de ser generada como dll es mucho más extensa que esta (lógico, tiene muchos más métodos y propiedades y es mucho mejor), las líneas de código que cuentan no son las de la clase, si no las finales que se utilizan al igual que las que tú has utilizado para image magik, el usuario sólo tiene que lidiar con esto:
Código :
Por Chema el 26 de Mayo de 2009
Por Christian el 26 de Mayo de 2009
Mi problema es a un principio ejecute el codigo me corria correctamente pero luego empezo a salirme filas de caracteres y esto lo probe localmente. Y bueno no entiendo a que se debe esto Lo unico que podria ser y lo que alguien ya dijo anteriormente es por el limite de memoria.
Desearia saber como poder solucionar esto ya que me interesa este codigo.
Gracias...
Por elchininet el 26 de Mayo de 2009
@Christian, esto sucede cuando quieres mostrar la imagen directamente lo que debes hacer es leer un fichero php como si fuera una imagen:
Código :
y el fichero image.php es el que muestra la imagen:
Código :
Por Delfina delfirossi@g el 05 de Junio de 2009
En ese caso, como puedo hacer para que si al hacer el crop la imgen queda mas chica del tamaño final que quiero que me haga el resize agrandando la imagen???
Por elchininet el 05 de Junio de 2009
elchininet :
Código :
De lo contrario el crop no se realiza bien en las imágenes verticales.
Muchas gracias.
Por Delfina el 05 de Junio de 2009
mira
Este es el codigo que uso
<?
include_once('thumb2.php');
$mythumb = new thumb();
$mythumb->loadImage('foto/01.jpg');
$mythumb->crop(300, 225,'bottom');
$mythumb->save('foto/01_2.jpg', 100);
?>
Esta es la imagen original:
http://www.soloazar.com.ar/foto/01.jpg
Este es el resultado:
http://www.soloazar.com.ar/foto/01_2.jpg
con el codigo original se me hacen espacios negros pero no son tan bruscos, y por lo menos el recorte lo hace mejor mira:
http://www.soloazar.com.ar/imagenes/11870f_220x165.jpg
Por elchininet el 05 de Junio de 2009
Código :
Por Delfina el 05 de Junio de 2009
Saludos.
Por Nadia el 09 de Junio de 2009
LES VOY A PEDIR UN FAVOR
ENTREN A ES WEB Y HAGACEN
UN BRUTO ESTA ES LA PAGINA
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
POR FAVOR
Por Nadia el 09 de Junio de 2009
LES VOY A PEDIR UN FAVOR
ENTREN A ES WEB Y HAGACEN
UN BRUTO ESTA ES LA PAGINA
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
POR FAVOR
Por Nadia el 09 de Junio de 2009
LES VOY A PEDIR UN FAVOR
ENTREN A ES WEB Y HAGACEN
UN BRUTO ESTA ES LA PAGINA
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
POR FAVOR
Por Nadia el 09 de Junio de 2009
LES VOY A PEDIR UN FAVOR
ENTREN A ES WEB Y HAGACEN
UN BRUTO ESTA ES LA PAGINA
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
http://nadia000.elbruto.es
POR FAVOR
Por elchininet el 09 de Junio de 2009
Por Jaime el 10 de Junio de 2009
Por Zurizadai el 15 de Junio de 2009
loadImage('thumbnails01.jpg'); $mythumb->resize(100, 'width'); $mythumb->show(); echo ''; ?>
me ayudan... ???
Por Zurizadai el 15 de Junio de 2009
Ayudenme por favor!!
Perdonen mi ignorancia, pero soy un principiante, muy principiante .
Por elchininet el 15 de Junio de 2009
Por Zurizadai el 16 de Junio de 2009
<?php
echo '<img src="image_width_100.php"/>';
?>
Pero al ejecutar este último archivo, no aparece nada, solo un recuadro de imagen sin nada, como eso que salen en las páginas cuando va una imagen y no se encuetra.
que puede ser??
sé que esta todo muy bien explicado, pero no me resulta!!! (estan todos los archivos en el mismo directorio... )
alguna idea de donde pueda estar el error, quisas es un error que estoy cometiendo yo?
Por elchininet el 16 de Junio de 2009
Código :
Por Zurizadai el 16 de Junio de 2009
porque puse una imagen en la carpeta, pero sigue apareciendo el mismo mono, como cuando una imagen no esta disponible...
me siento frustrado!!
quiero aprender a utilizar esta claseeeeeeee!!!!!!!!
Por elchininet el 16 de Junio de 2009
Por Zurizadai el 17 de Junio de 2009
apache 2.2.11
php 5.2.9-2
mysql 5.1.33
Muchisimas gracias por tu buena disposición!
Por elchininet el 17 de Junio de 2009
Por Andres el 25 de Junio de 2009
Por elchininet el 25 de Junio de 2009
Si quieres mostrar la imagen directo sin utilizar un php que redimensione y leer a este como una imagen, en el header debes declarar el content-type:
Código :
Por ogeretal el 30 de Junio de 2009
Gracias por la clase. La estoy tratando de utilizar pero tengo un problema y no se como resolevrlo. LLamo a al fichero show_image_width_100.php desde un bucle que me hace variar cada vez el nombre de la imagen. Si siempre pongo el mismo nombre, la rutina funciona perfectamente pero si lo tomo desde una base de datos, la imagen no me sale. He comprobado la ortografia del link de conexion y ese no es el fallo. ¿ Puede ser que tenga que ver con la memoria ? ¿ o que el mismo nombre de fichero pueda tener 3 imagenes diferentes en una misma página?
Gracias
Por elchininet el 30 de Junio de 2009
http://foros.cristalab.com/clase-de-php-para-crear-galerias-dinamicas-t73470/
La misma utiliza un fichero llamado "show_thumb.php", a este fichero se le pasa por GET la ruta de la imagen, y una medida y este devuelve la imagen, algo como eso es lo que debes hacer. Si miras la clase verás que se utiliza esta misma clase "thumb" y que por medio de un ciclo se crean todos los thumbnails necesarios.
Por agusro el 07 de Noviembre de 2009
soy nueva y no tengo mucha idea de php...
muchas gracias!!!
Por Inyaka el 17 de Noviembre de 2009
Código :
¿de donde salen las variables $info y $name?
info esta claro de que estamos hablando de la variable de clase $this->info , pero $name solo existe como variable en otras funciones, para evitar que apache me arrojase un feo error comente la linea
el sistema esta funcionando perfectamente sin esa linea , pero debe haber algo mas elegante para solucionar esto
PD. felicitaciones me sirvio la clase a pesar de todo
Por elchininet el 06 de Diciembre de 2009
Un saludo y gracias por todo
Por elchininet el 06 de Diciembre de 2009
Un saludo
Por Rafha01 el 10 de Diciembre de 2009
Felicitaciones
Por jb_script el 26 de Enero de 2010
Lo que yo he hecho para probarla es simplemente incluir las carpetas con las imagenes que venian en el zip, junto con los includes de los css y demas que tambien venian en el zip. Para llamar a la galeria lo hago desde my pagina index, a la que le he agregado el codigo de llamada del fichero index que tu incluias de ejemplo.
espero que me podais ayudar, ya que tengo que implementar una galeria, y tu clase es lo mas que he podido encontrar sin tener que recurrir a metodos mas complicados.
Un saludo y gracias de antemano!!!
Por Inyaka el 26 de Enero de 2010
Por jb_script el 26 de Enero de 2010
He seguido paso por paso y no se que puede ser lo que ocurre.
Seguire investigando. Si alguien me puede orientar lo agradecere.
Un saludo!!!
Por Inyaka el 26 de Enero de 2010
recuerda que la ruta hacia la carpeta de fotos es la ruta del sistema, no la ruta web
Por jb_script el 26 de Enero de 2010
En mi directorio de imagenes, tengo las imagenes que incluyó el autor de la clase, las que iban en el zip. Tambien he verificado que estoy usando las versiones corregidas, ya que en los post he visto y como me comentabas tu antes, que habia unos errores. El caso es que llevo todo el dia dandole vueltas, y no consigo dar con la solución.
Un saludo y a ver si consigo dar con la solucion, que me esta trayendo de cabeza.
Por Inyaka el 26 de Enero de 2010
¿viste la carpeta donde se crean las miniaturas? ¿existen las miniaturas en esa carpeta?
¿tienes la libreria GD instalada?
para saber esto necesitas un archivo php con el phpinfo
Código :
Por jb_script el 26 de Enero de 2010
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.9
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.2.37
WBMP Support enabled
XBM Support enabled
Por jb_script el 26 de Enero de 2010
dentro de show_thumb.php tengo esto:
$src = $_GET['src'];
$width = $_GET['width'];
include_once('thumb.php');
$image = new thumb();
$image->loadImage($src);
$image->crop($width, $width);
$image->show();
A este fichero se le llama dentro de la clase gallery.php dentro de la funcion show().
En ningun momento le estoy diciendo que guarde, por lo que creo que lo de que no deje las miniaturas creadas es por eso.
Un saludo.
Por elchininet el 26 de Enero de 2010
Dices que ya has corregido el bug y que lo has comprobado, sin embargo el archivo show_thumb.php que muestras es el primero, no el que se generó después de la actualización, por favor prueba con los archivos nuevos y después postea cualquier problema.
http://foros.cristalab.com/clase-de-php-para-crear-galerias-dinamicas-t73470/30.html#523722
Por jb_script el 27 de Enero de 2010
Una manera de solventar esto seria borrar este fichero, no?. Ya que solo se utiliza por windows, y generalmente, donde vaya a estar alojado se accedera por ftp, por lo que no creo que tenga mucha utilidad.
Un saludo!!!
Por jb_script el 27 de Enero de 2010
Es posible con esta clase?. Segun he leido en el codigo lo hacemos para los thumbs(miniaturas), pero bien podría valer para imágenes que no sean thumbs. Alguien lo ha usado así, o hay ya solucion a eso y estoy intentando hacer algo rebuscado con esta clase?
Un saludo!!!
Por elchininet el 27 de Enero de 2010
Por jb_script el 27 de Enero de 2010
Si tengo alguna duda ya la comentare por aqui.
Mil gracias y hasta el proximo post!!!.
Por jb_script el 28 de Enero de 2010
No se si me he explicado bien, si alguien necesita que lo aclare, que me lo indique.
Gracias de antemano!
Por elchininet el 28 de Enero de 2010
Por jb_script el 29 de Enero de 2010
...
$image = new thumb();
$image -> loadImage("".$path.$inter.$imagen."");
$image -> resize(500,"width");
$image -> save($path.$inter.$imagen,100);
...
El problema es que las imagenes las guarda a un tamaño menor, (una de las cosas que queria) pero las resoluciones de cada imagen son diferentes para cada una. No deberia de hacerlas todas segun el resize de mi script de 500x500?.
Me he encontrado que al recorrer la galería, éstas son de resoluciones diferentes.
Alguien sabe que le falta al código o que estoy haciendo mal?.
Para mostrar la galeria uso la función loadFolder() de gallery.php para mostrar los ficheros que he ido subiendo. en miniatura todas perfectas, pero el problema surge cuando pincho para ver la foto a tamaño normal, entonces es cuando veo que cada una esta en una resolucion diferente.
Gracias de antemano!!!
Por elchininet el 30 de Enero de 2010
Por Inyaka el 30 de Enero de 2010
Por jb_script el 03 de Febrero de 2010
En el ejemplo le pasabas show(500,100,10). Yo pensaba que el 10 (3er parámetro sería para indicar el espaciodo entre imágenes, pero al buscar en gallery.php, me encuentro con que la funcion recibe 500,100,$shownames=False. De donde sale ese $shownames?. Leyendo el código he visto que lo usa para una condición y así mostrar los nombres de las imágenes o no, pero si se le esta pasando un 10, no entiendo lo de ese $shownames.
Todo esto viene a que necesito espaciar mas el espacio que se deja entre imagen e imagen.
Un saludo!!!
Por elchininet el 03 de Febrero de 2010
http://foros.cristalab.com/clase-de-php-para-crear-galerias-dinamicas-t73470/30.html#523722
Desaparece el espaciado entre las imágenes y el tercer parámetro es true o false para mostrar el nombre de las imágenes.
Por jb_script el 08 de Febrero de 2010
Por elchininet el 08 de Febrero de 2010
Por sonplay.com el 21 de Febrero de 2010
Por pol10 el 14 de Abril de 2010
Alguien sabe por que sucede esto y como solucionarlo?
Muchas gracias.
Por Javi el 15 de Abril de 2010
En incluido la clase en mi web y me da este error
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 13688 bytes) in C:\xampp\htdocs\......\class\thumb.php on line 22.
Sabe alguien a que se puede debe?
Por elchininet el 27 de Abril de 2010
Código :
Donde xx sería el número de megas límite que permitirá el servidor al script.
Javi, (al igual que pol10) el error que posteas se debe al limite de memoria que puede ocupar un script en tu servidor, normalmente es de 8mb, pero según el error que posteas dice que el límite es de 32mb. por lo tanto debes estar tratando de crear thumbnails de imágenes demasiado grandes para que el script supere los 32mb.
Por Alvaro el 30 de Abril de 2010
Por CLAnonimo el 11 de Septiembre de 2010
Tengo una duda sobre el uso de esta clase(que por cierto esta muy buena). Segun se explica se tienes 3 paginas php, una con la case en si, la otra que llama a la clase y por ultimo la que mostrara la imagen. Con respecto a esto mismo, como puedo enviarle a la pagina que llama a la clase la imagen que quiero mostrar, en vez de definirla directamente en la pagina que llama a la clase.
Espero me puedan ayudar...
Por CLAnonimo el 12 de Septiembre de 2010
Continuando con la pregunta anterior, el codigoque estoy usando es el siguiente, en la pagina donde se mostrara la imagen esta lo siguiente:
<img class="galeria" src="miniatura.php?ipm=galerias/gatest/Imagen006.jpg" alt="Galeria Vacia" title="imagen de muestra"/>
en la pagina que llama a la clase esta lo siguiente:
include("imagen_cls.php");
$strimagen = $_GET["ipm"];
if ($strimagen != ""){
$miniatura->loadImage($stripm);
$miniatura->resize(92,"width");
$miniatura->show();
}else{
$miniatura->loadImage("imagenes/galeria_vacia.jpg");
$miniatura->resize(92,"width");
$miniatura->show();
}
y nose donde esta el error
espero me orienten mejor.
Por elchininet el 13 de Septiembre de 2010
Código :
Por CLAnonimo el 13 de Septiembre de 2010
disculpa por no poner todo el codigo me comi parte del e incluso cometi un error en la escritura anterior.
pero esta de la siguiente manera, en el archivo que llama a la clase:
<?php
include("imagen_cls.php");
$strimagen = $_GET["ipm"];
$miniatura = new thumb();
if ($strimagen != ""){
$miniatura->loadImage($strimagen);
$miniatura->resize(92,"width");
$miniatura->show();
}else{
$miniatura->loadImage("imagenes/galeria_vacia.jpg");
$miniatura->resize(92,"width");
$miniatura->show();
}
?>
Eso es el codigo completo..
Espero estabes este mas claro y me hechen una manito. gracias
Nota: Como puedo colocar el codigo como lo hisite tu...???
Por CLAnonimo el 13 de Septiembre de 2010
encontre laformade hacerqueelcodigo queescribi se vea como codigo asi que lo vuelvoa poner para que sea mas claro.
Código :
Bueno, cuento otra cosa hize una prueba comente el else completo con su contenido, y el pagina donde se muestra la imagen finalmente cree 2 tag <img>, uno con la instruccion original y otro con la variante de la imagen del else
me explico.
Código :
bueno, creeo que me explique mejor... ayudenme... donde estara el error???
Por Alfonso el 16 de Septiembre de 2010
pero lo resolvi solo... y como lo hize solo no mostrare como lo hice ... muchas gracias a ti elchininet , ya que fuiste el unico en temer la amabilidad de contestar...
bueno, hazta luego.
Por CLAnonimo el 02 de Octubre de 2010
$source = ($original);/////ESTE ES EL NOMBRE QUE TIENE QUE ESTAR CUANDO SUBA LA IMAGEN
$dest = 'imagen1.jpg';/////ESTE ES EL NOMBRE CON LA QUE SUBE LA IMAGEN Y ADEMAS LA REDIMENSIONA
HELP ME PLEASE!!!!!!!!!!!
Por elchininet el 05 de Octubre de 2010
@chunilp, debes crear un ciclo entre las imágenes que hay en la carpeta y redimensionarlas una a una. Los siguientes códigos te pueden servir:
http://www.cristalab.com/tips/listar-archivos-de-un-directorio-web-con-php-y-xml-c63212l/
http://foros.cristalab.com/generar-una-lista-de-archivos-de-un-directorio-web-con-php-t82272/
Por CLAnonimo el 11 de Octubre de 2010
Si resolvi el problema... y es mas pude hacer otras cosas con este script. pero he estado haciendo algunas busquedas en la web de algo que quiereo hacer, y es de subir imagenes a una carpeta pero antes de eso redimencionarlas para evitar, que al mostrar la imagen en su tamaño real esta exceda el tamaño visual del navegador. No quiero estar moviendo el scroll para ver todad la imagen.
Me gustaria saber si puedo usar este script para, despues de cargar la imagen redimencionarla y luego guardarla en la carpteta que desee, como puedo hacerlo..
Muchas gracias...
Por Victoria el 14 de Octubre de 2010
Por error CREATOR: gd-jp el 18 de Octubre de 2010
Por CLAnonimo el 01 de Noviembre de 2010
Por andrwsv el 01 de Septiembre de 2011
muy buena la clase funciona perfectamente pero necesito mostrar en una vista una imagen generada con show() , pero no necesito guardarla y me muestra el codigo de la imagen.
que debo hacer para mostrarla bien?
gracias
Por Jorge el 04 de Octubre de 2011
alguien sabe como hacerlo???
Por oarlegui el 20 de Octubre de 2011
y tengo este error Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in .../public_html/pablo/votos/thumb.php on line 98
Muchos saludos y gracias por la ayuda
Por oarlegui el 20 de Octubre de 2011
Por Pepe Platano el 06 de Diciembre de 2011
Por cKlarisa el 16 de Diciembre de 2011
Por cKlarisa el 16 de Diciembre de 2011
//---Actualizar la imagen y sus dimensiones
//$info = getimagesize($name); /*esta es la parte que comente, ya que no le vi ninguna funcion en esta parte del codigo */
$this->width = imagesx($image);
$this->height = imagesy($image);
$this->image = $image;
}
GRACIAS x la aportacion de este script!!
Por Boris el 19 de Enero de 2012
Por chris el 22 de Enero de 2012
ÿØÿàJFIFÿþ>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛC $.' ",#(7),01444'9=82<.342ÿÛC 2!!22222222222222222222222222222222222222222222222222ÿÀKd"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ?Ú)IåÕ€™§yu˜Šm¥Z¼B–“:ŽUqUb±ÔgÁakžNM5Çr6Ú¡xêûø~æP+ÔßèÄ…ýøE57¶£ñ?ãE¼Êùîµµ¼Þ¿lgRµü7R—Á:¸“lWÖN;d¾iYw_xþF;Õg5sPÒnt«˜ÖâEmÙÆÜã¥P‘€5M;0MDô¥ÆzÓY†:Ò¸ˆHæŠRy¢‚lz‚L©Q—ëFçþÿéUp°—ÈpNîÍoÙÚ'…R{dW9r=¤Ñ—à£vöÏô®¾Ñ‡¶3Z@d‘[ lò«bÑ[tcÛ¯ëD2' Ÿ¥Y€}Öl$Wû"ç9_N•–¡ 9ð«…×Ѫ¤:Æ“æ=]—¶½¸jáæqë]ÏÄ0îÐ@Ã?ϽpRÛ«ó¿ç\õ7.+B&p;ÓwŒu¤6`ÿËGüé¿cÞγ‡ 8ëE7ìh?½ÿ}*‰±êû½óFïz ,£þüÿ÷ýÿÆ—ì1ÏIÿïûÿidJ4#ùŸoª‘úÞÓ®âQ3ʃä‚ÃÒ¹Š;5k6oóLÄtú×#?¡–Gv¹ÆOf tôÍ\l‡sÙ“R²g‡¯r<êö+ÿ/ÿßcükÃ[Æ©¾|Dv$äÿ:©?‹!”ŒÍ„åŴǾÿlYcþ>àöÐE&¯dÝ/mÿïêÿ|ó'ŒbnÿÁøÕGñ=³±$MŸoÿ]' =CÇWQ\^ZySG Ù(À㧥r$f¨é7°ê6³KmБÃzÖµD•°MaQ^F‘z¬%ªAmŽ¼V†ÅQÀ¨ž’‰r(µ¼dò Ÿ¥`Žh¦MÎÛu¨óAl ÐG5ãSì:ĉ';=;þŸÎ¼y˜³d÷¯Eñ-Ä–¬ÖòF²y+‘¸áTwçüô®v{K$æm#ã;1o§—2F±£9+Ž`µ!n3]dzu¡#u¬`íÉ^¸4ó§YϬ_•;™òœy>œÒgÖº¹të0ç vª³év²òù`wN(æ+Á÷B=\Û¹ù.¡ý«¡“RM//>;ÖŸ£Æ®o-îh>a’9ý+kY·K¦ÝÜFñÅL•õvÐrøÊÑœ¬Hƒ<A8õgPÊÜAõ¯9º†K0Q‰Ü#ªýksÃFy¬Ê$+§Ú“L$ãÐìr9¢£ FõUXƒ²&šÆ/"c-ÂÄÈg8¨É>´Æ9Õ"NZm>Â@Cê6Í““ºXúþuÓl•pš…°úH˜þuÖm\ô»WÐS²ÙÈ>ÔgmôþÚ/øÔM§ÁÎ/!<ÿÏEõúúWfU}1”z 9QI³‰]6ußu©êC©ÇZ`°¶ÚwË“í*×jÊ=*&ÒŽTgöQvÈ¿Œ«W$@öDÞl¨[;yÚ3ê8®•”zTdÐRqB»2m´õÚ|øÕ³Ù†jêÆ‘.ÔP£ÐSßBÄúÒØ7aš*'=h ÿÙ
Por chris el 22 de Enero de 2012
Por Jaco el 10 de Febrero de 2012
function crop($cwidth, $cheight, $pos = 'center',$name)
al final de la funcion
agrega lo siguiente
$this->image = $image;
imagejpeg($this->image, $name, 100);
y listo tu imagen se guardara en la url que le asignaste a $name
Saludos
Por www.semitasoft.com el 25 de Febrero de 2012
chris: No te olvidaste nada la clase siempre va mostrar esos simbolos. Tienes que verlo dentro de tu src="tuthumbnail.php" o en todo caso ponle headers para mostrar IMAGE. y de seguro ya no verás esos simbolos. eso es la imagen en Hex.
Por marcelo el 18 de Junio de 2012
La estoy utilizando, funciona muy bien la clase, pero en algunas imagenes, me rellena el tamaño que doy con color negro...
Gracias, espero tu respuesta. SDLS.
Por luis el 16 de Agosto de 2012
����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ��C $.' ",#(7),01444'9=82<.342��C 2!!22222222222222222222222222222222222222222222222222���d"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��JZ(����u�t�r��Ɏ�m-��;#V������Ρ1�!�M���q|�3���ʒ���Io#�x����S�B�|��Y�<}��"���W8;��}��������T4�V�V�۸#��J�M;��ӳ (������)(��*�W���|�R�5����+���ѕ� JB!$��?z�|w���i���0�I��a^my����' 8P:Sk����}M�|IpK8�Tc�5�u+��dy�۟��������;OQ[������ ���L���)��wqHH����ƮU�6\*�����x}�������o��`%�����6�����u��Ź�m֬q$D�^ɧjjv1]۰d�g��Ҿl[��d�?/p{ף�:�*ϱ�m�c���ڭ驌ऴ�z��S9��(����m������*J���ɵ����������U�G�k�������̲c����}��(���e�F����1��Q3��)>X��\�:]*�-b�n"��#BK0�P@I��JЍB�g��n��hu�1��\ާmF]��]���٬��Nl8����1�o����=��SF�J05�:͌w���W�_[���F�^ vҒ��9�C��#� "�5=&��D��~���y��}T�h��;e�m˟C^�TqMY�QA!\��%/��nt�k��K�,�W�$�2��i=���#��o�8ܸvq����U 0;�&�캝���d퍪�����Y^ǥ�ّ{�5� ^D���Nӵ��d�Y��b������#(q�ہ�� (D���n6д��bMR�������iĹ��P�Z��x�iq�9���,� ��O��������έ�ɕF�?}��x�2I�k���9 [�����)��IshMT��τ��}���h�c����o��<q�?��NI����/X�K��/f�����K�jK4���y�c�����`�Uْ{U[��Kq�4(#��kM�E�H��H�[+#��:�j�S�w*Jus-u �_�T`{�re�VA��.�$��p�k*�6�B���5I�6������Ҹ-F�κ8���4^=gE��B?x�p�����3M;uCY���5���X�\U���ay��*3�aT~��������ո�yݚ�ԗ{)�����x�:ګ���B2A�N$v�V�zL��뵰G��k�B�\g���cR�rz����ٵ6�M��#}���(����m��K�_���������]���QER�5>��1��)s�] V�7f��袊�8O��
que falta configurar en el server????
ayuda por favor....
Por luis el 16 de Agosto de 2012
Por luis el 16 de Agosto de 2012
solo me faltaba la cabecera
header("Content-type: image/jpg");
Por pablo el 12 de Septiembre de 2012
PREGUNTA: como puedo hacer para que cada imagen tenga su nombre o su titulo??
muchas gracias!!!!!
Por Alberto el 11 de Octubre de 2012
Por Carlos el 14 de Noviembre de 2012
Que código coloco en la pagina donde quiero mostrar una miniatura de alguna imagen?
Qué codigo coloco en la pagina donde quiero mostrar una serie de miniaturas a traves de una base de datos, con una conexion mysql?
Saludos
Por clayan el 01 de Marzo de 2013
en tamaño original si me las muestra.... alguien que pueda brindarme ayuda que modificar para poder visualizarlas en el web.... gracias.!
Por wnuken el 01 de Abril de 2013
agrege en save()
imagedestroy($this->image);
por cada caso, de esa forma se libera memoria.
No use getimagesize() porque lo hago antes de declarar la clase, pero vale la pena hacerlo para validar que si es una imagen y otros datos valiosos.
Por roblop24 el 12 de Abril de 2013
Podria alguien volver a subir el fichero gallery_second.zip el enlace que hay ya no funciona y no lo puedo descargar.
Gracias
Por Victoria el 04 de Septiembre de 2013
Además cambie la variable $name a una propiedad $this->name porque eso me estaba dando problemas.
Para quien le sirva comparto:
<?php
class Thumb {
var $image;
var $type;
var $width;
var $height;
//---Método de leer la imagen
function loadImage($name) {
$this->name = $name;
//---Tomar las dimensiones de la imagen
$info = getimagesize($this->name);
$this->width = $info[0]; //968
$this->height = $info[1]; //1290
$this->type = $info[2];
//---Dependiendo del tipo de imagen crear una nueva imagen
switch($this->type){
case IMAGETYPE_JPEG:
$this->image = imagecreatefromjpeg($this->name);
break;
case IMAGETYPE_GIF:
$this->image = imagecreatefromgif($this->name);
break;
case IMAGETYPE_PNG:
$this->image = imagecreatefrompng($this->name);
break;
}
}
//---Método de guardar la imagen
function save($quality = 100) {
//---Guardar la imagen en el tipo de archivo correcto
switch($this->type){
case IMAGETYPE_JPEG:
imagejpeg($this->image, $this->name, $quality);
break;
case IMAGETYPE_GIF:
imagegif($this->image, $this->name);
break;
case IMAGETYPE_PNG:
$pngquality = floor(($quality - 10) / 10);
imagepng($this->image, $this->name, $pngquality);
break;
}
}
//---Método de mostrar la imagen sin salvarla
function show() {
//---Mostrar la imagen dependiendo del tipo de archivo
switch($this->type){
case IMAGETYPE_JPEG:
imagejpeg($this->image);
break;
case IMAGETYPE_GIF:
imagegif($this->image);
break;
case IMAGETYPE_PNG:
imagepng($this->image);
break;
}
}
//---Método de redimensionar la imagen sin deformarla
function resize($value, $prop){
//---Determinar la propiedad a redimensionar y la propiedad opuesta
$prop_value = ($prop == 'width') ? $this->width : $this->height;
$prop_versus = ($prop == 'width') ? $this->height : $this->width;
//---Determinar el valor opuesto a la propiedad a redimensionar
$pcent = $value / $prop_value;
$value_versus = $prop_versus * $pcent;
//---Crear la imagen dependiendo de la propiedad a variar
$image = ($prop == 'width') ? imagecreatetruecolor($value, $value_versus) : imagecreatetruecolor($value_versus, $value);
//---Hacer una copia de la imagen dependiendo de la propiedad a variar
switch($prop){
case 'width':
imagecopyresampled($image, $this->image, 0, 0, 0, 0, $value, $value_versus, $this->width, $this->height);
break;
case 'height':
imagecopyresampled($image, $this->image, 0, 0, 0, 0, $value_versus, $value, $this->width, $this->height);
break;
}
//---Actualizar la imagen y sus dimensiones
$info = getimagesize($this->name);
$this->width = imagesx($image);
$this->height = imagesy($image);
$this->image = $image;
}
//---Método de extraer una sección de la imagen sin deformarla
function crop($cwidth, $cheight, $pos = 'center') {
//---Dependiendo del tamaño deseado redimensionar primero la imagen a uno de los valores
if($cwidth > $cheight){
$this->resize($cwidth, 'width');
}elseif($this->height > $this->width){
$this->resize($cheight, 'width');
}else{
$this->resize($cheight, 'height');
}
//---Crear la imagen tomando la porción del centro de la imagen redimensionada con las dimensiones deseadas
$image = imagecreatetruecolor($cwidth, $cheight);
switch($pos){
case 'center':
imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
break;
case 'left':
imagecopyresampled($image, $this->image, 0, 0, 0, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
break;
case 'right':
imagecopyresampled($image, $this->image, 0, 0, $this->width - $cwidth, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
break;
case 'top':
imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), 0, $cwidth, $cheight, $cwidth, $cheight);
break;
case 'bottom':
imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), $this->height - $cheight, $cwidth, $cheight, $cwidth, $cheight);
break;
}
$this->image = $image;
}
}
$mythumb = new thumb();
$mythumb->loadImage('http://images.coveralia.com/autores/fotos/victoria-justice44332.jpg');
//$mythumb->loadImage('http://3.bp.blogspot.com/_q0SG_HFnuLk/TU_CANIp6wI/AAAAAAAAF3s/OpW1uLfiyhY/s320/mueble-o-algo.jpg');
//$mythumb->resize(200, 'height');
$mythumb->crop(200, 200, 'bottom');
header("Content-type: image/jpg");
$mythumb->show();
?>
Por Nathannov el 26 de Mayo de 2014
Por Samu el 22 de Agosto de 2014
<?php
// Para ver los smileys de una galeria
function ver($galeria)
{
$dir=opendir($galeria); // Abrir directorio
$imagenes=array(); // Creo array, evitando error si no hay smileys
while (false !== ($file = readdir($dir)))
{
$ext=strrchr($file,'.'); // Extraer extensión
$ext=strtolower($ext); // Pasarla a a minúsculas (por si las moscas)
$extensiones = array('.gif','.jpg','.png'); // Extensiones permitidas
if(in_array ($ext,$extensiones)) // Compruebo que sean imagenes
$imagenes[]=$file; // Almaceno entrada de imagen
}
closedir($dir); // Cerrar directorio
// Para imprimir las imagenes de esa galería
// Dirección de los caretos
$link2=pathinfo($_SERVER['PHP_SELF']); // Información sobre la ruta
$link='http://'.$_SERVER['HTTP_HOST'].$link2[dirname].'/';
// Para añadir la galeria, en caso que haya
if($galeria!='.')
$link=$link.$galeria.'/';
$a=0; // Cada formulario tiene que llamarse de forma distinta
foreach ($imagenes as $entry) // De uno a uno recorro el array y los imprimo
{
// Imprimir la imagenes
$mostrar.= '<a href="'.$link.$entry.'" class="opacity" style="text-decoration: none;" rel="prettyPhoto[gallery1]"><img style="margin:2px;
border: 0.3em solid white;
-webkit-border-radius: 0.3em;
-moz-border-radius: 0.3em;
border-radius: 0.3em;
height: 150px;
width: 150px;"
src="'.$link.$entry.'" alt="'.$entry.'" title="'.$link.$entry.'">
</a>';
$a++; // Un icono más, diferencio los form.
}
return $mostrar;
}
?>
Por Sergio Sanchez el 01 de Septiembre de 2014
Codigo actual y erroneo:
//---Método de redimensionar la imagen sin deformarla
function resize($value, $prop){
//---Determinar la propiedad a redimensionar y la propiedad opuesta
$prop_value = ($prop == 'width') ? $this->width : $this->height;
$prop_versus = ($prop == 'width') ? $this->height : $this->width;
Codigo arreglado y bien:
function resize($value, $prop){
//---Determinar la propiedad a redimensionar y la propiedad opuesta
$prop_value = ($prop == 'width') ? $this->width : $this->height;
$prop_versus = ($prop == 'height') ? $this->height : $this->width;
Explico: en la segunda comprobacion donde deberia ser una redimension por height, la comprobacion era la misma que en la anterior!!
Espero les sirva y no tengan que partirse los cuernos para sacar este pequeño fallo
Por paula23andrea el 17 de Abril de 2015
Estoy tratando de poner la galería en mi sitio, pero las vistas en miniatura no cargan o algo así, si uno las clickea, se agranda y se ve bien. Pero las vistas previas no... solo cargan los cuadritos con la esquina de icono roto.
Alguna sugerencia, me urge...
Gracias!
Por EmiCantero el 30 de Abril de 2015
Por Cesar Reyes el 03 de Noviembre de 2015
Como logo definir en php el numero de imagen a mostrar en una tabla, por ejemplo si siembre quiero mostrar las ultimas 15 imagenes subida
le agradecere si me escribe a mi correo, [email protected]
Por José el 31 de Enero de 2018
classroom rental space
training rrom rental in singapore
training rooms in singapore
seminar room rental in singapore
indoor team building activities
corporate team building games singapore
team bonding in singapore
team building activities singapore
team building games singapore
10 soft skills you need
administrative office procedures
administrative support courses
adult learning mental skills
adult learning physical skills
anger management courses in singapore
appreciative inquiry courses
archiving and records management
assertiveness and self confidence
attention management courses
basic bookkeeping courses
being a likeable boss
body language basics courses
budgets and financial reports
business acumen courses
business ethics courses
business etiquette courses in singapore
business succession planning courses
business writing courses in singapore
call center training courses
change management courses in singapore
coaching and mentoring courses
coaching sales people courses
collaborative business writing
communication strategies courses
conducting annual employee reviews
conflict resolution courses
contact center training courses
contract management courses in singapore
creating a great webinar
creative problem solving courses
crisis management courses
critical thinking courses in singapore
customer service courses in singapore
customer support courses
cyber security courses in singapore
delivering constructive criticism
developing a lunch and learn
developing corporate behavior
developing creativity courses
developing new managers
digital citizenship courses
emotional intelligence courses
employee motivation courses
employee on boarding courses
employee recognition courses
employee recruitment courses
employee termination processes
entrepreneurship courses in singapore
event planning courses in singapore
executive and personal assistants
facilitation skills courses
generation gaps courses
goal setting and getting things done
handling a difficult customer
health and wellness at work courses
high performance teams inside the company
high performance teams remote work force
hiring strategies courses
human resource management courses in singapore
improving mindfulness
improving self awareness
increasing your happiness
internet marketing fundamentals courses
interpersonal skills courses
job search skills courses
knowledge management courses in singapore
leadership and influence courses
lean process and six sigma
life coaching essentials courses
manager management courses
managing personal finances courses
managing work place anxiety
marketing basics courses
measuring results from training
media and public relations courses
meeting management courses
middle manager courses
millennial on boarding courses
m learning essentials
motivating your sales team
multi level marketing courses
negotiation skills courses
networking outside the company
networking within the company
office politics for managers
organizational skills courses
overcoming sales objections
performance management courses
personal branding courses in singapore
personal productivity courses
presentation skills courses in singapore
project management courses in singapore
proposal writing courses
prospecting and lead generation
public speaking courses in singapore
risk assessment and management courses
safety in the work place courses
sales fundamentals courses
sales training courses in singapore
servant leadership courses
it courses in singapore
microsoft training singapore
corporate training in singapore
corporate sgx
social intelligence courses
social learning courses
social media in the work place
social media marketing courses in singapore
soft skills courses in singapore
stress management courses in singapore
supervising others
supply chain management courses
taking initiative courses
talent management courses
team building for managers
team building through chemistry
teamwork and team building
telephone etiquette courses
telework and telecommuting
time management courses in singapore
trade show staff training
train the trainer courses
virtual team building and management
women in leadership courses
work life balance courses in singapore
work place diversity courses
work place harassment courses
work place violence courses
sancy suraj
sancy suraj
sancy suraj
sancy suraj
sancy suraj
sancy suraj
sancy suraj
sancy suraj
[url=https://books.google.com.sg/books?id=1QykBQAAQBAJ&pg=PT362&lpg=PT362&dq=%22sancy+suraj+singh%22&source=bl&ots=E86QDyrLG2&sig=H-6a_YH-kTWaZWTfPSr1xfm4BOs&hl=en&sa=X&ved=0ahUKEwi3_56hhubVAhWJLo8KHcxTBxQ4ChDoAQgjMAA#v=onepage&q =% 22sancy% 20suraj% 20singh% 22 & f = false]sancy suraj[/url]
sancy suraj
longest colour sequence memorised
sancy suraj
longest colour sequence memorised
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
memory training course
lunch talks
lunch talks
memory training course
memory training course
cabin crew
online memory course
memory training course
memory training course
memory training course
memory training course
memory training course
speed reading
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
geography tuition for secondary school students in singapore
geography tuition for secondary school students singapore
geography tuition for secondary school students singapore
geography tuition for secondary school students singapore
geography tuition for secondary school students singapore
secondary geography tuition in singapore
history tuition for secondary school students in singapore
social studies tuition for secondary school students in singapore
psle english tuition in singapore
psle science tuition in singapore
secondary 1 chemistry tuition in singapore
secondary 1 physics tuition in singapore
school holiday workshops courses for students in singapore
school holidays activitie in singapore
school holidays activitie in singapore
[url=http://umonictuitionadvantage.com/2017-november-school-holidays-activities-programmes-workshop-courses-camps-for- students-kids-in-singapore/]school holidays activitie in singapore[/url]
school holidays activitie in singapore
study skills
study skills
study skills workshops course in singapore
study skills workshops course in singapore
speed reading
speed reading
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition
tuition[
tuition[
tuition[
tuition[
tuition[
tuition[
tuition[
tuition[
student courses
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
corporate training
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
corporate lunch talk
team building
team building ideas
team building activities
unique team building
team building
corporate training in singapore
corporate training courses
corporate training courses
corporate training courses
corporate training courses
corporate health talk
corporate health talk
corporate health talk
lunch and learn talk
workplace lunch and learn
corporate training companies in singapore
training companies in singapore
emcee
emcee
health talks
soft skills training course
corporate training providers
professional development courses
training and development courses
short courses in singapore
corporate training courses in singapore
corporate training courses
corporate training in singapore
school holiday workshops courses for students in singapore
business students memory course in singapore
business students memory improvement workshop in singapore
memory improvement course for business students
memory improvement course for business students
business students memory improvement course
business students memory course in singapore
corporate health talks singapore
corporate health talks in singapore
corporate health talk singapore
corporate health talk in singapore
corporate health talks singapore
corporate health talks singapore
finance students memory training course in singapore
finance students memory training course in singapore
finance students memory training course in singapore
memory training courses for finance students in singapore
memory training courses for finance students in singapore
memory improvement courses for finance students in singapore
pinnacle minds
memory course
study skills
speed reading
memory training
school holiday
lunch and learn
march school holidays workshops
march school holidays workshops
march school holidays workshops
march school holidays workshops
march school holidays workshops
june school holidays workshops
june school holidays workshops
june school holidays workshops
june school holidays workshops
september 2018 school holidays workshops
september 2018 school holidays workshops
september 2018 school holidays workshops
september 2018 school holidays workshops
november 2018 school holidays workshops
november 2018 school holidays workshops
november 2018 school holidays workshops
november 2018 school holidays workshops
december 2018 school holidays workshops
december 2018 school holidays workshops
december 2018 school holidays workshops
december 2018 school holidays workshops
top 10 soft skills you need training course
administrative office procedures training course
administrative support training course
anger management training course
appreciative inquiry training course
archiving and records management training course
archiving and records management training course
self confidence and assertiveness training course
improving your attention management training course
bacis bookkeeping training course
being a likeable boss training course
body language training course
budgets and-financial reports training course
business acumen training course
business ethics training course
business etiquette training course
business succession planning training course
business writing training course
call centre training course
change management training course
civility in the workplace training course
coaching and mentoring training course
coaching salespeople training course
collaborative business writing training course
communication strategies training course
conducting annual employee reviews training course
conflict resolution training course
contact centre training course
contract management training course
creating a great webinar training course
creative problem solving training course
crisis management training course
critical thinking training course
customer service training course
customer support training course
cyber security training course
delivering constructive criticism training course
developing lunch and learn training course
developing corporate behavior training course
developing creativity training course
developing new managers training course
digital citizenship training course
emotional intelligence training course
employee motivation training course
employee onboarding training course
employee recognition training course
employee recruitment training course
employee termination processes training course
entrepreneurship training course
event planning training course
executive and personal assistants training course
facilitation skills training course
generation gaps training course
goal setting and getting things done training course
handling a difficult customer training course
health and wellness at work training course
high performance teams inside the company training course
high performance teams remote workforce training course
hiring strategies training course
human resource management training course
improving mindfulness training course
improving self awareness training course
internet marketing fundamentals training course
interpersonal skills training course
job search skills training course
knowledge management training course
leadership and influence training course
lean process and six sigma training course
life coaching essentials training course
manager management training course
managing personal finances training course
managing workplace anxiety training course
marketing basics training course
measuring results from training course
media and public relations training course
meeting management training course
middle manager training course
millennial onboarding training course
mlearning essentials training course
motivating your sales team training course
negotiation skills training course
networking outside the company training course
networking within the company training course
office politics for managers training course
organizational skills training course
overcoming sales objections training course
performance management training course
personal branding training course
personal productivity training course
presentation skills training course
project management training course
proposal writing training course
prospecting and lead generation training course
public speaking training course
risk assessment and management training course
safety in the workplace training course
sales fundamentals training course
servant leadership training course
social intelligence training course
social learning training course
social media in the workplace training course
social media marketing training course
stress management training course
supervising others training course
supply chain management training course
taking initiative training course
talent management training course
team building for managers training course
team building through chemistry training course
teamwork and team building training course
telephone etiquette training course
telework and telecommuting training course
time management training course
top 10 sales secrets training course
trade show staff training course
train the trainer training course
virtual team building and management training course
women in leadership training course
work life balance training course
workplace diversity training course
workplace harassment training course
workplace violence training course
half day memory improvement courses workshops
speed reading courses workshops in singapore
10 soft skills you need corporate training course in singapore
administrative office procedures corporate training course in singapore
administrative support corporate training course in singapore
anger management corporate training course in singapore
appreciative inquiry corporate training course in singapore
archiving and records management corporate training course in singapore
self confidence assertiveness corporate training course in singapore
improving your attention management corporate training course in singapore
basic bookkeeping corporate training course in singapore
being a likeable boss corporate training course in singapore
body language basics corporate training course in singapore
budgets and financial reports corporate training course in singapore
business acumen corporate training course in singapore
business ethics corporate training course in singapore
business etiquette corporate training course in singapore
business succession planning corporate training course in singapore
business writing corporate training course in singapore
call center corporate training course in singapore
change management corporate training course in singapore
civility in the workplace corporate training course in singapore
coaching and mentoring corporate training course in singapore
coaching salespeople corporate training course in singapore
collaborative business writing corporate training course in singapore
communication strategies corporate training course in singapore
conducting annual employee reviews corporate training course in singapore
conflict resolution corporate training course in singapore
contact center corporate training course in singapore
contract management corporate training course in singapore
creating a great webinar corporate training course in singapore
creative problem solving corporate training course in singapore
crisis-management corporate training course in singapore
critical thinking corporate training course in singapore
customer service corporate training course in singapore
customer support corporate training course in singapore
cyber security corporate training course in singapore
delivering constructive criticism corporate training course in singapore
developing a lunch and learn corporate training course in singapore
developing corporate behavior corporate training course in singapore
developing creativity corporate training course in singapore
developing new managers corporate training course in singapore
digital citizenship corporate training course in singapore
emotional intelligence corporate training course in singapore
employee motivation corporate training course in singapore
employee onboarding corporate training course in singapore
employee recognition corporate training course in singapore
employee recruitment corporate training course in singapore
employee termination processes corporate training course in singapore
entrepreneurship training course in singapore
event planning corporate training course in singapore
executive and personal assistants corporate training course in singapore
facilitation skills corporate training course in singapore
generation gaps corporate training course in singapore
goal setting and getting things done corporate training course in singapore
handling a difficult customer corporate training course in singapore
health and wellness at work corporate training course in singapore
high performance teams inside the company corporate training course in singapore
high performance teams remote workforce corporate training course in singapore
hiring strategies corporate training course in singapore
human resource management corporate training course in singapore
improving mindfulness corporate training course in singapore
improving self awareness corporate training course in singapore
increasing your happiness corporate training course in singapore
internet marketing fundamentals corporate training course in singapore
interpersonal skills corporate training course in singapore
job search skills corporate training course in singapore
knowledge management corporate training course in singapore
leadership and influence corporate training course in singapore
lean process and six sigma corporate training course in singapore
life coaching essentials corporate training course in singapore
manager management corporate training course in singapore
managing personal finances corporate training course in singapore
marketing basics corporate training course in singapore
measuring results from corporate training course in singapore
media and public relations corporate training course in singapore
meeting management corporate training course in singapore
middle manager corporate training course in singapore
millennial onboarding corporate training course in singapore
mlearning essentials corporate training course in singapore
motivating your sales team corporate training course in singapore
negotiation skills corporate training course in singapore
networking outside the company corporate training course in singapore
networking within the company corporate training course in singapore
office politics for managers corporate training course in singapore
organizational skills corporate training course in singapore
overcoming sales objections corporate training course in singapore
performance management corporate training course in singapore
personal branding corporate training course in singapore
personal productivity corporate training course in singapore
presentation skills corporate training course in singapore
project management corporate training course in singapore
proposal writing corporate training course in singapore
prospecting and lead generation corporate training course in singapore
public speaking corporate training course in singapore
[url