// 添加水印,filePath 源图片路径, watermark 水印图片路径
public static boolean createMark(String filePath,String watermark) {
ImageIcon imgIcon = new ImageIcon(filePath);
Image theImg = imgIcon.getImage();
ImageIcon waterIcon = new ImageIcon(watermark);
Image waterImg = waterIcon.getImage();
int width = theImg.getWidth( null );
int height = theImg.getHeight( null );
BufferedImage bimage = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bimage.creatGraphics( );
g.setColor(Color.red);
g.setBackground(Color.white);
g.drawImage(theImg, 0 , 0 , null );
g.drawImage(waterImg, 100 , 100 , null );
g.drawString( " 12233 " , 10 , 10 ); // 添加文字
g.dispose();
try {
FileOutputStream out = new FileOutputStream(filePath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(50f, true );
encoder.encode(bimage, param);
out.close();
} catch (Exception e) { return false ; }
return true ;
}
JAVA给图片上添加水印文字
import java.awt. * ;
import java.awt.image. * ;
import java.io. * ;
import javax.swing. * ;
import com.sun.image.codec.jpeg. * ;
import java.text.AttributedString;
import java.awt.font.TextAttribute;
import java.text.AttributedCharacterIterator;
public class WaterMark {
/** */ /** */ /** */ /**
* 给图片添加水印
* @param filePath 需要添加水印的图片的路径
* @param markContent 水印的文字
* @param markContentColor 水印文字的颜色
* @param qualNum 图片质量
* @param fontType 字体
* @param fontsize 字体大小
* @return
* @author zhongweihai newwei2001@yahoo.com.cn
*/
public boolean createMark(String filePath,String markContent,Color markContentColor, float qualNum,
String fontType, int fontSize)
{
ImageIcon imgIcon = new ImageIcon(filePath);
Image theImg = imgIcon.getImage();
int width = theImg.getWidth( null );
int height = theImg.getHeight( null );
BufferedImage bimage = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bimage.createGraphics();
g.setColor(markContentColor);
g.setBackground(Color.white);
g.drawImage(theImg, 0 , 0 , null );
AttributedString ats = new AttributedString(markContent);
Font f = new Font(fontType,Font.BOLD, fontSize);
ats.addAttribute(TextAttribute.FONT, f, 0 ,markContent.length() );
AttributedCharacterIterator iter = ats.getIterator();
g.drawString(iter,width / 5 ,height / 5 ); // 添加水印的文字和设置水印文字出现的内容
g.dispose();
try {
FileOutputStream out = new FileOutputStream(filePath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(qualNum, true );
encoder.encode(bimage, param);
out.close();
} catch (Exception e)
{ return false ; }
return true ;
}
public static void main(String[] args)
{
WaterMark wm = new WaterMark();
wm.createMark( " c:\year2-11.jpg " , " 此图片来自煞笔网 " ,Color.red,70f, " 黑体 " , 23 );
}
} 生成缩小jpg图片程序
import java.awt.image.BufferedImage;
import java.io.File;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.imageio.ImageIO;
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineTransform;
import java.awt.Image;
public class ZoomPicture {
public static void main(String arg[]) {
String filePath = " g:/图片.jpg " ; // 图片的位置
int height = 50 ;
int width = 150 ;
Icon icon = null ;
try {
icon = getFixedBoundIcon(filePath,height,width);
} catch (Exception e) {
System.out.println( " exception : " + e);
}
System.out.println( " ### " + icon); // 生成新图片的位置;
}
public static Icon getFixedBoundIcon(String filePath, int height, int width)
throws Exception {
double Ratio = 0.0 ;
// 缩放比例
File F = new File(filePath);
if ( ! F.isFile()) throw new Exception
(F + " is not image file error in getFixedBoundIcon! " );
Icon ret = new ImageIcon(filePath);
BufferedImage Bi = ImageIO.read(F);
if ((Bi.getHeight() > height) || (Bi.getWidth() > width)) {
if (Bi.getHeight() > Bi.getWidth()) {
Ratio = ( new Integer(height)).doubleValue() / Bi.getHeight();
}
else {
Ratio = ( new Integer(width)).doubleValue() / Bi.getWidth();
}
int lastLength = filePath.lastIndexOf( " . " );
String subFilePath = filePath.substring( 0 ,lastLength);
String fileType = filePath.substring(lastLength);
File zoomFile = new File(subFilePath + " _ " + height + " _ " + width + fileType);
Image Itemp = Bi.getScaledInstance (width,height,Bi.SCALE_SMOOTH);
AffineTransformOp op = new AffineTransformOp
(AffineTransform.getScaleInstance(Ratio, Ratio), null );
Itemp = op.filter(Bi, null );
try {
ImageIO.write((BufferedImage)Itemp, " jpg " , zoomFile);
ret = new ImageIcon(zoomFile.getPath());
} catch (Exception ex) {
System.out.println( " ######## here error : " + ex);
}
}
return ret;
}
}
分享到:
评论