Foros del Web » Programando para Internet » Javascript »

Crear imagen desde imagen

Estas en el tema de Crear imagen desde imagen en el foro de Javascript en Foros del Web. Consigo dinámicamente una imagen a través de [ var img=new Image();img.src="sprites.png"; ], y me gustaría que, dependiendo de una serie de condiciones, devolver una sección ...
  #1 (permalink)  
Antiguo 16/07/2011, 00:41
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 1 mes
Puntos: 142
Crear imagen desde imagen

Consigo dinámicamente una imagen a través de [ var img=new Image();img.src="sprites.png"; ], y me gustaría que, dependiendo de una serie de condiciones, devolver una sección específica de esa imagen como una nueva imagen. ¿Es esto posible?
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...
  #2 (permalink)  
Antiguo 16/07/2011, 04:50
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Crear imagen desde imagen

a ver si lo que buscas es la propiedad backgroundPosition
  #3 (permalink)  
Antiguo 16/07/2011, 10:48
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 1 mes
Puntos: 142
Respuesta: Crear imagen desde imagen

Lo que buscaba era devolver una nueva imagen como tal, pero si no hay dicha posibilidad, tendré que recurrir a estos métodos. Gracias
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...
  #4 (permalink)  
Antiguo 16/07/2011, 11:21
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Crear imagen desde imagen

Podrías usar canvas y slicing: https://developer.mozilla.org/en/Can...l/Using_images
Una vez hecho el slice podés usar el método toDataURL para obtener una imagen en formato data: URI.
El problema son las versiones de explorer que no soportan canvas...
  #5 (permalink)  
Antiguo 31/07/2011, 11:28
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 1 mes
Puntos: 142
Respuesta: Crear imagen desde imagen

Precisamente algo así es lo que hago ahora, siendo el destino final un Canvas (Lo siento por los usuarios de IE).

El detalle es que llamo a esta función desde otro punto, y quería ver si era posible guardar estos fragmentos como imágenes en un array, para invocar a esta función pasándole un elemento imagen, y así pueda dibujar un subfragmento de la imagen principal, o una imagen independiente, por igual.

Ej:

Código PHP:
imgArr[0].src=ctx.drawImage(document.getElementById('source'),33,71,104,124,21,20,87,104);
imgArr[1].src=ctx.drawImage(document.getElementById('source'),133,171,204,224,121,120,187,204);
imgInd.src="image.png";

draw(imgArr[0]);
draw(imgInd); 
Claro, si no es posible, tendré que manejarlo con los elementos que tengo disponibles. Muchas gracias
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...
  #6 (permalink)  
Antiguo 31/07/2011, 12:14
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Crear imagen desde imagen

Podés usar el método toDataURL. Un ejemplo básico aquí:
Código PHP:
<!DOCTYPE html>
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
function 
porcion(imagesxsysWidthsHeightdxdydWidthdHeight){
    if(
document.createElement('canvas').getContext){
        var 
c=document.createElement('canvas');
        
c.width=dWidth;
        
c.height=dHeight;
        
ctx=c.getContext('2d');
        
ctx.drawImage(imagesxsysWidthsHeightdxdydWidthdHeight);
        var 
src=c.toDataURL();
        var 
im=document.createElement('img');
        
im.src=src;
        
document.body.appendChild(im);
        
im=c=null;
    }
}
</script>

</head>

<body>
<img id="pp" src="arwen.jpg" width="500" height="350" />
<form>
    <input onclick="porcion(document.getElementById('pp'), 0, 0, 50, 50, 0, 0, 50, 50)" type="button" name="button" id="button" value="porcion1" />
    <input onclick="porcion(document.getElementById('pp'),50, 100, 100, 100, 0, 0, 100, 100)" type="button" name="button2" id="button2" value="porcion2" />
</form>
</body>
</html> 
  #7 (permalink)  
Antiguo 31/07/2011, 12:20
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 1 mes
Puntos: 142
Respuesta: Crear imagen desde imagen

¡Justo lo que buscaba! Sabía que por ahí iba la cuestión, pero no lograba llegar al punto exacto. ¡Muchísimas gracias!
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...
  #8 (permalink)  
Antiguo 02/08/2011, 23:07
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 1 mes
Puntos: 142
Respuesta: Crear imagen desde imagen

Estoy con un problema de lo más extraño. Guiado por la ayuda que me proporcionaste, realicé el código siguiente:

Código PHP:
    function stack(){
        var 
tImg=frames[frames.length-1];
        if(
tImg!=null&&tImg.height>0){
            
frames.pop();
            for(var 
i=0;i<tImg.width/frameWidth;i++){
                var 
canvas=document.createElement('canvas');
                
canvas.width=frameWidth;
                
canvas.heigth=tImg.height;
                var 
ctx=canvas.getContext('2d');
                
ctx.drawImage(tImg,frameWidth*i,0,frameWidth,tImg.height,0,0,frameWidth,tImg.height);
                var 
src=canvas.toDataUrl();
                
alert(src);
                var 
tImag=new Image();
                
tImag.src=src;
                
frames.push(tImag);
            }
            return 
true;
        }
        else
            return 
false;
    } 
Sin embargo, hay un error que impide la correcta realización de dicho código. Firebug me lanza la siguiente línea en el alert que aparece arriba:
Código:
canvas.toDataUrl is not a function
[Detener en este error] var src=canvas.toDataUrl();
Que yo sepa, toDataUrl es una función de Canvas... ¿Alguien sabe que podría estar haciendo mal?
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...
  #9 (permalink)  
Antiguo 03/08/2011, 04:02
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Crear imagen desde imagen

Es toDataURL
  #10 (permalink)  
Antiguo 03/08/2011, 13:12
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 1 mes
Puntos: 142
Respuesta: Crear imagen desde imagen

¡No vuelvo a programar a las 3 de la madrugada! ... De acuerdo, no fue ese el problema. Olvido continuamente la importancia de las mayúsculas y no me detuve a analizar este detalle. ¡Muchas gracias!

Ahora todo funciona perfecto. Desafortunadamente debo encender mi servidor local para pruebas, ya que toDataURL no funciona directo. Pero bueno, funciona sin problemas, que es lo importante. ¡Muchas gracias!
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:26.