Red de conocimientos sobre prescripción popular - Conocimiento del confinamiento - Código o idea para agregar marca de agua a un video usando java

Código o idea para agregar marca de agua a un video usando java

paquete com.jc.ts.services;

importar java.awt.color;

importar java.awt.graphics;

importar java.awt.image ;

Importar Java .awt .imagen almacenada en el búfer;

Importar Java .io . >

Importar Java.io.ioexception;

Importar javax.imageio.imageio;

Importar javax.servlet..sun.image.codec.JPEG.imageformatexception;

Importar códec de imagen .JPEG .

Importar códec de imagen . /p>

*Categoría de servicio para agregar marca de agua de imagen

* */

Marca de agua de clase pública{

/**

* @param sizeContext agrega texto de marca de agua.

* @param objeto de flujo de solicitud de solicitud

* @param objeto de flujo de respuesta de solicitud

* */

@SuppressWarnings("deprecation ")

public static void createMarkSize(Contexto de tamaño de cadena, solicitud HttpServletRequest, respuesta HttpServletResponse) {

Pruebe {

ruta de cadena = solicitud. getrealpath(request. getservletpath());

archivo inputstream in = nuevo archivo inputstream(ruta);

image src = imageio read(in);

int w =. src . getwidth(null);

int h = src . getheight(null);

BufferedImage img = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB); mesa de trabajo

gráficos g = img . get gráficos(); //Obtener el pincel

g.drawImage(src, 0, 0, w, h, null);/ /Escribir la imagen de origen a la mesa de trabajo.

g . set color(color . rojo);

g.drawString(sizeContext, 10, 5); //Agregar texto

g . ); //Generar imágenes

JPEGImageEncoder e = códec JPEG .createjpegencoder(respuesta . obtener flujo de salida()

e . >respuesta.getOutputStream(). close();

} catch(excepción de archivo no encontrado e){

//TODO bloque catch generado automáticamente

e. p>

} catch (ImageFormatException e) {

//TODO bloque catch generado automáticamente

e. printstacktrace();

} catch (IOException) e) {

//TODO bloque de captura generado automáticamente

e printstacktrace();

}

}

/**

* @param localPath agrega la ruta del LOGOTIPO de la marca de agua.

* @param objeto de flujo de solicitud de solicitud

* @param objeto de flujo de respuesta de solicitud

**/

@SuppressWarnings("deprecation ")

public static void createMarkLogo(String localPath, solicitud HttpServletRequest, respuesta HttpServletResponse) {

Prueba {

archivo inputstream file = nuevo archivo inputstream(ruta local );

imagen fimg = imageio . read(file);

int fw = fimg .

int FH = fimg . (nulo);

ruta de cadena = solicitud . getrealpath(request . getservletpath()

archivo inputstream in = nuevo archivo inputstream(ruta); imagen src = imageio . read(in);

int w = src . >BufferedImage img = new BufferedImage(w, h, BufferedImage. TYPE_INT_RGB); //Construir la mesa de trabajo

gráficos g = img.() //Obtener el pincel

g.drawImage(src, 0, 0, w, h, null); //Escribe la imagen original en el tablero de dibujo.

g.drawImage(fimg, w-20, h-15, fw, fh, null); //Escribe la imagen de la marca de agua en la mesa de dibujo.

g . dispose(); //Generar imagen

JPEGImageEncoder e = Códec JPEG (respuesta . obtener flujo de salida()); codificar(img);

response.getOutputStream(). close();

} catch(excepción de archivo no encontrado e){

//TODO bloque catch generado automáticamente

e. p>

} catch (ImageFormatException e) {

//TODO bloque catch generado automáticamente

e. printstacktrace();

} catch (IOException) e) {

//TODO bloque de captura generado automáticamente

e printstacktrace();

}

}

}

/**

* @param localPath agregar ruta de imagen de marca de agua

* @param solicitar objeto de flujo de solicitud

* @param objeto de flujo de respuesta de solicitud

* @param ancho El ancho de la imagen de la marca de agua

* @param alto La longitud de la imagen de la marca de agua.

**/

@SuppressWarnings("deprecation ")

public static void createMarkLogo(ruta local de cadena, solicitud HttpServletRequest, respuesta HttpServletResponse, ancho int, int altura) {

Pruebe {

archivo inputstream file = nuevo archivo inputstream(ruta local);

imagen fimg = imageio read(archivo);

p>

int fw = fimg . getwidth(null);

int FH = fimg .

string path = request . getrealpath(solicitud . getservletpath ());

archivo inputstream in = nuevo archivo inputstream(ruta);

image src = imageio read(in);

int w = src . getwidth(null); //w filtra el ancho de la pantalla por usted.

int h = src . getheight(null); //h filtra la longitud de la imagen por ti.

BufferedImage img = new BufferedImage(w+width, h+height, imagen almacenada en buffer. TYPE _ INT _ RGB); //Construye la mesa de trabajo (el ancho de la mesa de trabajo es la suma de las dos imágenes)

graphics g = img . get Graphics(); //Obtener el pincel

g.drawImage(src, 0, 0, w, h, null); imagen original a la mesa de dibujo.

g.drawImage(fimg, width, height, fw, fh, null //Escribe la imagen de la marca de agua en la mesa de trabajo.

g . dispose(); //Generar imagen

JPEGImageEncoder e = Códec JPEG (respuesta . obtener flujo de salida()); codificar(img);

response.getOutputStream().

close();

} catch(archivo no encontrado excepción e){

//TODO bloque catch generado automáticamente

e. p>

} catch (ImageFormatException e) {

//TODO bloque catch generado automáticamente

e. printstacktrace();

} catch (IOException). e) {

//TODO bloque de captura generado automáticamente

e printstacktrace();

}

}

}

Presta atención al comentario del tercer método g.drawimage (fimg, width, height, fw, FH, null según los parámetros, estás ajustando el tono (debajo del); imagen original )

Llamada de filtro

Paquete com.JC.ts.filter;

Importar excepción Java.io.io;

Importar servlet javax .

Importar servlet . excepción

Importar javax.servlet.servletrequest;

Importar javax.servlet.servletresponse;

Importar javax.servlet..JC.ts.services.watermark ;

La clase pública WaterFilter implementa el filtro {

public void destroy() {

//TODO código auxiliar de método generado automáticamente

}

public void do filter(solicitud de servlet arg 0, ServletResponse arg1,

FilterChain arg2) arroja IOException, ServletException {

solicitud de solicitud de servlet http =(solicitud de servlet http )arg 0;

HttpServletResponse respuesta=(respuesta del servlet http)arg 1;

//WaterMark.createMarkSize("Nanjing ts ", solicitud, respuesta);

//watermark . createmarklogo(" D:\ \ ​​​​workspace \ \ mybook \ \ WebRoot \ \ images \ \ logo \ \ book . jpg ", solicitud, respuesta);

crea marca de agua. mark logo("D:\\workspace\\mybook\\WebRoot\\images\\log\\book.jpg", solicitud, respuesta, 20, 30);

//Tenga en cuenta que la ruta es absoluto Sí, los tres efectos no se pueden ejecutar al mismo tiempo.

}

Public void init(FilterConfig arg0) lanza ServletException {

//TODO código auxiliar de método generado automáticamente

}

}

Configuración Web.xml (escrita en el servlet)

& ltFilter>

& ltDescription>Esta es la descripción de mi componente J2EE </description>

<Display-name>Este es el nombre para mostrar de mi componente J2EE</display-name>

<filter-name>filtro de agua</filter-name>

<filter-class> ;com.JC.ts.filter.filtro de agua</filter- class>

</filter>