Código o idea para agregar marca de agua a un video usando java
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; p>
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 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
} p >
}
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>