package com.walkerjava.utils
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.font.TextAttribute;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
import javax.swing.ImageIcon;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* 构造图片输出
*/
public class Test {
/**
*
* @param souchFilePath
* :源图片路径
* @param targetFilePath
* :生成后的目标图片路径
* @param markContent
* :要加的文字
* @param markContentColor
* :文字颜色
* @param qualNum
* :质量数字
* @param fontType
* :字体类型
* @param fontSize
* :字体大小
* @return
*/
public static void createMark(String souchFilePath, String targetFilePath,
String markContent, Color markContentColor, float qualNum,
String fontType, int fontSize, int w, int h, Color color) {
markContentColor = color;
/* 构建要处理的源图片 */
ImageIcon imageIcon = new ImageIcon(souchFilePath);
/* 获取要处理的图片 */
Image image = imageIcon.getImage();
// Image可以获得图片的属性信息
int width = image.getWidth(null);
int height = image.getHeight(null);
// 为画出与源图片的相同大小的图片(可以自己定义)
BufferedImage bImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 构建2D画笔
Graphics2D g = bImage.createGraphics();
/* 设置2D画笔的画出的文字颜色 */
g.setColor(markContentColor);
/* 设置2D画笔的画出的文字背景色 */
g.setBackground(Color.white);
/* 画出图片 */
g.drawImage(image, 0, 0, null);
/* --------对要显示的文字进行处理-------------- */
AttributedString ats = new AttributedString(markContent);
Font font = new Font(fontType, Font.BOLD, fontSize);
g.setFont(font);
/* 消除java.awt.Font字体的锯齿 */
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
/* 消除java.awt.Font字体的锯齿 */
更多实例请访问 http://www.walkerjava.com/forum.php?mod=viewthread&tid=135
// font = g.getFont().deriveFont(30.0f);
ats.addAttribute(TextAttribute.FONT, font, 0, markContent.length());
AttributedCharacterIterator iter = ats.getIterator();
/* 添加水印的文字和设置水印文字出现的内容 ----位置 */
g.drawString(iter, width - w, height - h);
/* --------对要显示的文字进行处理-------------- www.it165.net */
g.dispose();// 画笔结束
try {
// 输出 文件 到指定的路径
FileOutputStream out = new FileOutputStream(targetFilePath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bImage);
param.setQuality(qualNum, true);
encoder.encode(bImage, param);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Test.createMark("d:\\image\\daili.jpg", "d:\\image\\601.jpg",
"这是用java程序给图片添加的文字水印", null, 1, "方正楷体简体", 30, 700, 300,
Color.GRAY);
}
}
相关推荐
Java为图片添加水印功能,这个水印类的操作比较实用,不但可以旋转水印图像,还可设置其水印图片的透明度,使其与原图融为一体,给图片添加水印,可以设置图片水印的角度,设置对线段的锯齿状边缘处理,第一参数->...
java生产文字图片,消除线段的锯齿状边缘。文字更加光滑
图片转字符图片工具类,支持 Gif 动画、图片合并、图片加水印、文字消除锯齿、图片无损保存、图片像素风、九宫格图、百叶图、双重曝光、修改图片DPI等图片处理其他工具类方法
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
java 生成图片大字容易产生锯齿,使用canvas绘制图片然后用base64保存,可以生成无锯齿 大图。
用GDI+消除画直线的锯齿,C++ Chart的使用
Wrap Look and Feel acts as a decorator for the current ... This Look and Feel is a powerful tool you can use to enhance the appearance of any Java application, whether you have the source code or not.
主要代码: BufferedImage image = new BufferedImage(400, 120, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g2d = image.createGraphics(); g2d.setColor(Color.BLUE); ... g2d.fillRoundRect(0, 0, 400, 120,...
VB中使用GDI+消除锯齿模块
VB6无损图像缩放 最大限度消除锯齿 GDI实现
图片转字符图片工具类,支持 Gif 动画、图片合并、图片加水印、文字消除锯齿、图片无损保存、修改图片DPI等图片处理其他工具类方法。详情请看README.md文件说明。 图片转字符图片工具类,支持 Gif 动画、图片...
将图片加载到内存 循环图片每个像素 找到你需要修改的像素 进行颜色修改。然后再图片BASE64
主要代码: BufferedImage image = new BufferedImage(400, 120, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g2d = image.createGraphics(); g2d.setColor(Color.BLUE); ... //g2d.fillRoundRect(0, 0, 400, ...
用java自带的抗锯齿画圆角矩形,效果比不开好很多! 主要代码: @Override public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints....
参考QT Demo(Image Composition),使用QT图片混合技术实现抗锯齿头像小Demo,Windows QtCreator创建运行通过。经过尝试setMask方式始终存在锯齿,最后在这种图片混合方式下尝试成功。build-showroundpic-Desktop_Qt_5...
透明图片作winform的背景去锯齿,绝对有效。采用双层窗体。能拖动
解决抗锯齿的源码,有编译好的demo,已经验证有效。放心下载
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
delphi用canvas画斜线时总是存在锯齿,转换成gdi画就可以消除