2011-08-05 25 views
7

necesito para recortar variablesized imágenes en rompecabezas pices forma como este (no cuadrados): http://www.fernando.com.ar/jquery-puzzle/recorte escalable máscara

he considerado la posibilidad de hacer esto con una biblioteca de php como El Cairo o GD, pero tienen poco que no tiene experiencia con estos librays, y no ve ninguna remembranza inmemorial para crear una máscara de recorte dinámicamente escalable para imágenes de diferentes tamaños.

Estoy buscando orientación/consejos sobre qué lenguaje de programación del servidor utilizar para lograr esta tarea, y preferiblemente un enfoque a este problema.

Respuesta

0

Puede crear una imagen usando GD con el tamaño de la pieza del rompecabezas. y luego copie la imagen completa en esa imagen con el recorte correcto para obtener la parte correcta de la imagen.

Luego puede simplemente colorear dinámicamente en cada parte de la pieza que desea eliminar con un color distinto (por ejemplo, # 0f0) y luego utilizar imagecolorallocatealpha para hacer que ese color sea transparente. Hazlo para cada pieza y tienes tus piezas de imagen del lado del servidor.

Sin embargo, si yo fuera tu crearía la máscara de recorte de cada rompecabezas de paz por adelantado en el color distintivo. Eso haría dos imágenes por conexión (una con el conector "círculo" sobresaliendo y otra donde encaja este conector circular). De esta forma, puede copiar estas máscaras en la imagen para crear bordes bonitos rápidamente.

0

GD es bastante complicado, he escuchado cosas muy buenas sobre Image Magick para las cuales hay una versión de PHP y mucha documentación en php.net. Sin embargo, no todos los servidores web tendrían esto instalado por defecto.

http://www.php.net/manual/en/book.imagick.php

0

Si decide hacerlo usando PHP con GD entonces el código aquí pueden ser útiles:

http://php.amnuts.com/index.php?do=view&id=15&file=class.imagemask.php

Esencialmente lo que tiene que ver con GD es comenzar con una máscara en un tamaño particular y luego use la función imagecopyresampled para copiar el recurso de la imagen de la máscara a un tamaño mayor o menor. Para ver lo que quiero decir, consulte la clase de método _getMaskImage que se muestra en la dirección de arriba. Un ejemplo práctico de la salida se puede ver en:

http://php.amnuts.com/demos/image-mask/

El problema de hacer que a través de GD, por lo que yo puedo decir, es que lo que necesita hacer es un píxel a la vez si quieres para lograr niveles de opacidad variables, por lo que procesar una imagen de gran tamaño puede tardar unos segundos. Con ImageMagick esto puede no ser el caso.