图片改变大小加水印加文字
2012-08-25 15:10
295 查看
package com.lss.common.file.image; import java.awt.*; import java.awt.image.*; import javax.imageio.ImageIO; import javax.imageio.IIOException; import java.io.*; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * 图片改变大小加水印加文字 * * @author SHOUSHEN LUAN * @datetime Aug 25, 20123:13:01 PM * */ public class ImageOperate { public static void main(String[] args) { new ImageOperate().waterMark("/source.jpg", "/suiyin.jpg"); new ImageOperate().modifyImageSize("/source.jpg", "/lss.jpg", 100, 200); new ImageOperate().imageAddFont("D:\\image/source.jpg", "D:\\image/addFont.png", "图片增加文字效果图"); } /** * 给图片加水印,但不改变大小 * * @param strOriginalFileName * String(原始文件) * @param strWaterMarkFileName * String(水印后) */ public void waterMark(String strOriginalFileName, String strWaterMarkFileName) { try { // 源文件 String root = "D:\\image"; // session.getServletContext().getRealPath("/"); File fileOriginal = new File(root + strOriginalFileName); Image imageOriginal = ImageIO.read(fileOriginal); int widthOriginal = imageOriginal.getWidth(null); int heightOriginal = imageOriginal.getHeight(null); BufferedImage bufImage = new BufferedImage(widthOriginal, heightOriginal, BufferedImage.TYPE_INT_RGB); Graphics g = bufImage.createGraphics(); g.drawImage(imageOriginal, 0, 0, widthOriginal, heightOriginal, null); // 水印文件 File fileWaterMark = new File(root + strWaterMarkFileName); Image imageWaterMark = ImageIO.read(fileWaterMark); int widthWaterMark = imageWaterMark.getWidth(null); int heightWaterMark = imageWaterMark.getHeight(null); // 水印文件在源文件的右下角 g.drawImage(imageWaterMark, widthOriginal - widthWaterMark, heightOriginal - heightWaterMark, widthWaterMark, heightWaterMark, null); g.dispose(); String newFile = root + strOriginalFileName; int index = newFile.lastIndexOf("."); newFile = newFile.substring(0, index) + "_x_" + newFile.substring(index); FileOutputStream fos = new FileOutputStream(newFile); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos); encoder.encode(bufImage); fos.flush(); fos.close(); fos = null; } catch (Exception e) { e.printStackTrace(); } } /** * 给图片增加文字,画线,话3D方框 * * @param sourceImage * @param targetImage * @param str */ public void imageAddFont(String sourceImage, String targetImage, String str) { try { File fileOriginal = new File(sourceImage); Image imageOriginal = ImageIO.read(fileOriginal); int widthOriginal = imageOriginal.getWidth(null); int heightOriginal = imageOriginal.getHeight(null); BufferedImage bufImage = new BufferedImage(widthOriginal, heightOriginal, BufferedImage.TYPE_INT_RGB); Graphics g = bufImage.createGraphics(); g.drawImage(imageOriginal, 0, 0, widthOriginal, heightOriginal, null); g.setColor(Color.RED); g.drawString(str, 15, 15); g.setFont(Font.getFont("新宋体")); g.drawLine(10, 10, 100, 200); g.draw3DRect(10, 10, widthOriginal - 30, heightOriginal - 30, false); g.dispose(); FileOutputStream fos = new FileOutputStream(targetImage); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos); encoder.encode(bufImage); fos.flush(); fos.close(); fos = null; } catch (Exception e) { e.printStackTrace(); } } /** * 修改图片大小 */ public void modifyImageSize(String srcImgFile, String newImageFile, int new_w, int new_h) { String root = "D:\\image"; File file = new File(root + srcImgFile); Image src = null; try { src = javax.imageio.ImageIO.read(file); java.awt.image.BufferedImage tag = new java.awt.image.BufferedImage(new_w, new_h, java.awt.image.BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); FileOutputStream newimage = new FileOutputStream(root + newImageFile); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage); encoder.encode(tag); // 近JPEG编码 newimage.close(); } catch (IIOException ee) { ee.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- PHP 文字,图片水印,缩略图,裁切成小图(大小变小)
- Java操作图片改变大小加水印
- 项目实践之修改图片画布大小(图像不变),增加文字水印
- javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
- javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
- 项目实践之修改图片画布大小(图像不变),增加文字水印
- javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印
- javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印
- .NET上传图片加文字和水印图片源码
- asp.net 上传图片时改变图片的大小
- 使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图
- 微信分享 微信对图片文字大小的限制 代码如下
- 左边图片的文本框,当文字输入时改变图片,模仿微博登录框
- java图片加水印文字
- delphi图片增加文字水印
- UE如何改变点击上传图片的弹出框的大小...
- 使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图(原创)
- C#图片加文字、图片水印
- PHP给图片加文字水印和图片水印
- 随时给自己贴的图片加文字的php水印