Usuario:


Video

Storyboard

>Modelo

ID:(104, 0)



Formación de Animaciones

Descripción

>Top


En el caso de animaciones se puede trabajar con la clase MediaTracker. Se crea un objeto mediante

```

tracker = new MediaTracker(this);

```

Se obtiene el puntero a una imagen de fondo

```

bg = getImage(getDocumentBase(),""images/background.gif"");

```

Se carga la imagen de fondo

```

tracker.addImage(bg, 0);

```

y se van cargando todas las imagenes de la serie

```

for (int i = 0; i < 5; i++){

anim[i] = getImage(getDocumentBase(),"images/anim"+i+".gif");

tracker.addImage(anim[i], 1);

}

```

ID:(1247, 0)



Imágenes de Duke para Animación

Imagen

>Top


Concadenar imagenes

ID:(2445, 0)



Ejemplo de Generador de GIF

Descripción

>Top


Para formar una animación basta con agregar las distintas imagenes formando un archivo de formato GIF:

```

import javax.imageio.*;

import javax.imageio.metadata.*;

import javax.imageio.stream.*;

import java.awt.image.*;

import java.io.*;

import java.util.Iterator;

public class GifSequenceWriter {

protected ImageWriter gifWriter;

protected ImageWriteParam imageWriteParam;

protected IIOMetadata imageMetaData;

public GifSequenceWriter(

ImageOutputStream outputStream,

int imageType,

int timeBetweenFramesMS,

boolean loopContinuously) throws IIOException, IOException {

gifWriter = getWriter();

imageWriteParam = gifWriter.getDefaultWriteParam();

ImageTypeSpecifier imageTypeSpecifier =

ImageTypeSpecifier.createFromBufferedImageType(imageType);

imageMetaData =

gifWriter.getDefaultImageMetadata(imageTypeSpecifier,

imageWriteParam);

String metaFormatName = imageMetaData.getNativeMetadataFormatName();

IIOMetadataNode root = (IIOMetadataNode)

imageMetaData.getAsTree(metaFormatName);

IIOMetadataNode graphicsControlExtensionNode = getNode(

root,

"GraphicControlExtension");

graphicsControlExtensionNode.setAttribute("disposalMethod", "none");

graphicsControlExtensionNode.setAttribute("userInputFlag", "FALSE");

graphicsControlExtensionNode.setAttribute(

"transparentColorFlag",

"FALSE");

graphicsControlExtensionNode.setAttribute(

"delayTime",

Integer.toString(timeBetweenFramesMS / 10));

graphicsControlExtensionNode.setAttribute(

"transparentColorIndex",

"0");

IIOMetadataNode commentsNode = getNode(root, "CommentExtensions");

commentsNode.setAttribute("CommentExtension", "Created by MAH");

IIOMetadataNode appEntensionsNode = getNode(

root,

"ApplicationExtensions");

IIOMetadataNode child = new IIOMetadataNode("ApplicationExtension");

child.setAttribute("applicationID", "NETSCAPE");

child.setAttribute("authenticationCode", "2.0");

int loop = loopContinuously ? 0 : 1;

child.setUserObject(new byte[]{ 0x1, (byte) (loop & 0xFF), (byte)

((loop >> 8) & 0xFF)});

appEntensionsNode.appendChild(child);

imageMetaData.setFromTree(metaFormatName, root);

gifWriter.setOutput(outputStream);

gifWriter.prepareWriteSequence(null);

}

public void writeToSequence(RenderedImage img) throws IOException {

gifWriter.writeToSequence(

new IIOImage(

img,

null,

imageMetaData),

imageWriteParam);

}

public void close() throws IOException {

gifWriter.endWriteSequence();

}

private static ImageWriter getWriter() throws IIOException {

Iterator iter = ImageIO.getImageWritersBySuffix("gif");

if(!iter.hasNext()) {

throw new IIOException("No GIF Image Writers Exist");

} else {

return iter.next();

}

}

private static IIOMetadataNode getNode(

IIOMetadataNode rootNode,

String nodeName) {

int nNodes = rootNode.getLength();

for (int i = 0; i < nNodes; i++) {

if (rootNode.item(i).getNodeName().compareToIgnoreCase(nodeName)

== 0) {

return((IIOMetadataNode) rootNode.item(i));

}

}

IIOMetadataNode node = new IIOMetadataNode(nodeName);

rootNode.appendChild(node);

return(node);

}

public static void main(String[] args) throws Exception {

if (args.length > 1) {

BufferedImage firstImage = ImageIO.read(new File(args[0]));

ImageOutputStream output =

new FileImageOutputStream(new File(args[args.length - 1]));

GifSequenceWriter writer =

new GifSequenceWriter(output, firstImage.getType(), 1, false);

writer.writeToSequence(firstImage);

for(int i=1; i

BufferedImage nextImage = ImageIO.read(new File(args[i]));

writer.writeToSequence(nextImage);

}

writer.close();

output.close();

} else {

System.out.println(

"Formato: java GifSequenceWriter [lista de archivos] [archivo entregado]");

}

}

}

```

ID:(379, 0)



MonteMedia Capturador de Pantalla

Descripción

>Top


Una de las rutinas para grabar un video de lo que esta ocurriendo en la pantalla se puede construir con la libreria:

monte-media-0.7.7g.jar

que se describe en la página web randelshofer.ch

Primero hay que cerar la configuración:

```

GraphicsConfiguration gc = GraphicsEnvironment.

getLocalGraphicsEnvironment().

getDefaultScreenDevice().

getDefaultConfiguration();

int screenRate = 15;

int bitDepth = 16; // 8, 16, 24

java.lang.Float quality = 1.0f;

// mouse

java.lang.Integer mouseRate = 15; // 30

// audio

java.lang.Float audioRate = 8000f;

java.lang.Integer audioBitsPerSample = 8; // 8, 16

java.lang.Integer audioChannels = 2;

```

Con la configuración se puede iniciar la filmación:

```

try {

// start filming

pScreen = new ScreenRecorder(

gc,

new Rectangle(

pScreen_pt.x,

pScreen_pt.y,

780,

600),

new Format(

MediaTypeKey,

MediaType.FILE,

MovieFolder,

"",

MovieFile,

smovie_file,

MimeTypeKey, MIME_AVI),

new Format(

MediaTypeKey,

MediaType.VIDEO,

EncodingKey,

ENCODING_AVI_TECHSMITH_SCREEN_CAPTURE,

CompressorNameKey,

COMPRESSOR_NAME_AVI_TECHSMITH_SCREEN_CAPTURE,

DepthKey,

bitDepth,

FrameRateKey,

Rational.valueOf(screenRate),

QualityKey,

quality, KeyFrameIntervalKey,

screenRate * 60),

new Format(

MediaTypeKey,

MediaType.VIDEO,

EncodingKey,

"black",

FrameRateKey,

Rational.valueOf(mouseRate)),

new Format(

MediaTypeKey,

MediaType.AUDIO,

SampleRateKey,

Rational.valueOf(audioRate),

SampleSizeInBitsKey,

audioBitsPerSample,

ChannelsKey,

audioChannels));

pScreen.start();

} catch (IOException e) {

e.printStackTrace();

} catch (AWTException e) {

e.printStackTrace();

}

```

Una vez se ha filmado se puede terminar esta:

```

try { // stop filming

pScreen.stop();

} catch (IOException e) {

e.printStackTrace();

}

pbtnclape.resetImage(0,"CLAPBOARD");

```

ID:(8826, 0)



Cámara Web

Descripción

>Top


Una de las rutinas para capturar la cámara web se puede construir con la librería:

webcam-capture-0.3.10.jar

La página web de la librería es:

Sarxos

Para sacar una imagen simplemente se usa:

```

Webcam webcam = Webcam.getDefault();

webcam.open();

ImageIO.write(webcam.getImage(), "PNG", new File("hello-world.png"));

```

ID:(1805, 0)