//GoodFont只是一个标记字体特性的bean
//加字体(3D效果)
public static void createJpgByGoodFont(String inputPath,String outputPath,GoodFont[] goodfont){
BufferedImage image;
try {
image = ImageIO.read(new FileInputStream(inputPath));
if(goodfont==null)return;
FileOutputStream jpgOut = new FileOutputStream(outputPath);
Graphics2D g = image.createGraphics();
for(GoodFont gf:goodfont){
int style=gf.getStyle();
int size=gf.getSize();
String name=gf.getName();
int leftX=gf.getLeft();
int topY=gf.getTop();
int width=gf.getWidth();
int high=gf.getHigh();
int textDirect=gf.getTextDirect();
String text=gf.getText();
String align=gf.getAlign();
Color color=gf.getColor();
Color fillColor=gf.getFillColor();
Color drawColor=gf.getDrawColor();
Font font = new Font(name, style, size);
g.setFont(font);
if(fillColor!=null){
g.setColor(fillColor);
g.fill3DRect(leftX, topY, width, high, true);
}
if(drawColor!=null){
g.setColor(drawColor);
for(int i=0;i<gf.getDrawBorder();i++)
g.draw3DRect(leftX, topY, width, high+i, true);
}
//设置背景色,仅当背景无图片时使用
// g.setBackground(Color.YELLOW);
// g.setColor(Color.BLACK);
g.setColor(color);
if(align.equalsIgnoreCase("right")){
leftX=leftX+width-size*text.length();
}
else if(align.equalsIgnoreCase("center")){
leftX=leftX+(width-size*text.length())/2;
}
int j = size;
System.out.println("text="+text+",leftX="+leftX+",topY="+topY+",size="+size+",color="+color+",border="+gf.getDrawBorder());
if(textDirect==1)//横排的文字
g.drawString(text,leftX, topY+j);
else{//竖排的文字
for(int i=0;i<text.length();i++)
{
g.drawString(text.substring(i,i+1),leftX,topY+j);
j+=size;
}
}
}
g.dispose();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(jpgOut);
encoder.encode(image);
jpgOut.flush();
jpgOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (Throwable e) {
e.printStackTrace();
}
}
//加图片
public static void createJpgByLogo(String inputPath,String outputPath,String logoPath,int x,int y){
BufferedImage image;
try {
image = ImageIO.read(new FileInputStream(inputPath));
if(logoPath==null)return;
FileOutputStream jpgOut = new FileOutputStream(outputPath);
Graphics2D g = image.createGraphics();
g.drawImage(ImageIO.read(new FileInputStream(logoPath)), x, y, null);
g.dispose();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(jpgOut);
encoder.encode(image);
jpgOut.flush();
jpgOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (Throwable e) {
e.printStackTrace();
}
}
分享到:
- 2009-11-24 21:23
- 浏览 1962
- 评论(4)
- 论坛回复 / 浏览 (4 / 4921)
- 查看更多
相关推荐
【fnt工具——程序图片字体工具】是一种专为移动开发设计的高效字体处理软件,相比传统的bitmapfnt工具,它提供了更快捷、便利的操作体验。在移动应用开发中,字体的处理是一项重要的工作,因为良好的文字展示能直接...
Java 3D API是Java的一个扩展,旨在为开发者提供强大的三维建模和可视化工具。其关键特性包括: 1. **三维几何对象**:Java 3D支持各种3D形状,如立方体、球体、锥体、柱体等,以及自定义几何模型。 2. **变换**:...
Java 2D和3D因其跨平台性和易用性,成为许多开发者首选的图形编程工具。 通过阅读"计算机图形学:应用JAVA 2D和3D"这本教程,你可以系统地学习到如何使用Java来创建高质量的2D和3D图形应用,无论是简单的图表还是...
3. **Font和TextAttribute类**:用于处理文本样式和布局,支持多种字体和排版效果。 4. **Image类**:处理和显示位图图像,包括加载、保存、缩放、裁剪等功能。 5. **Color类**:定义和管理颜色,支持RGB、ARGB颜色...
1. **Java 2D API**:Java 2D API是Java平台上的一个强大工具,用于创建和渲染高质量的2D图形、文本和图像。它包括了各种图形绘制函数,如线条、形状、路径、文本和位图操作。 2. **坐标系统与变换**:书中会介绍...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
总之,Java 2D和3D API为开发人员提供了强大的工具,使得在Java平台上创建引人入胜的图形应用成为可能。无论是简单的图表、复杂的3D模型,还是实时的图形渲染,都有相应的API支持。通过学习和实践,你将在计算机图形...
3D渲染引擎如Unity和Unreal Engine是实现这些效果的常用工具。 接下来,“球状旋转”意味着这些3D标签会围绕一个虚拟的球体表面进行旋转展示。这通常需要一种算法来计算每个标签的位置,确保它们均匀分布并随着球体...
Java作为一门广泛使用的编程语言,其在图形处理方面提供了丰富的API和工具,使得开发者可以构建出引人入胜的2D和3D应用。Java 2D API是Java标准版(Java SE)的一部分,它允许程序员创建高质量的2D图形、文本和图像...
总之,【JAVA画图工具】的实现是一个全面的JAVA编程实践,涵盖了GUI设计、事件处理、图形绘制等多个方面,对于深化JAVA编程知识和提升实际开发能力具有显著的效果。通过这样的课程设计,学生能够更好地掌握JAVA语言...
3. **动画框架**:为了实现动态效果,开发者可能使用了像CSS3的动画、JavaScript的GreenSock Animation Platform (GSAP) 或者Unity3D中的Animate组件等工具。在Android和iOS平台上,可能分别使用了Android的...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
总之,Java 2D API为Java程序员提供了丰富的工具和接口,用于创建专业级别的图形应用程序,从简单的图表到复杂的动画和3D效果,都能在Java 2D的框架下得以实现。通过学习和熟练掌握这些知识,开发者可以构建出功能...