package lava.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
public class GIFUtil {
public static void main(String[] args) {
List<DrawTextBean> beans = new ArrayList<DrawTextBean>();
Font font=new Font("msyh",Font.PLAIN,12);
DrawTextBean bean1 = new DrawTextBean(103,113,"你好你好(12345)",Color.black,font);
DrawTextBean bean2 = new DrawTextBean(85,139,"123456",Color.black,font);
DrawTextBean bean3 = new DrawTextBean(270,138,"1231-14567889",Color.black,font);
beans.add(bean1);
beans.add(bean2);
beans.add(bean3);
GIFUtil.GifAddText("E:/Others/pic/buyself.gif","E:/Others/pic/test2.gif", beans );
}
public static void GifAddText(String srcImgPath,String destImgPath,List<DrawTextBean> beans) {
try {
File _file = new File(srcImgPath);
Image src = ImageIO.read(_file);
int wideth = src.getWidth(null);
int height = src.getHeight(null);
BufferedImage image = new BufferedImage(wideth, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.drawImage(src, 0, 0, wideth, height, null);
for(int i=0;i<beans.size();i++){
g.setColor(beans.get(i).getColor());
g.setFont(beans.get(i).getFont());
g.drawString(beans.get(i).getText(), beans.get(i).x,beans.get(i).y);
}
g.dispose();
GIFEncoder encode = new GIFEncoder(image);
OutputStream output = new BufferedOutputStream(
new FileOutputStream(destImgPath));
encode.Write(output);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package lava.util;
import java.awt.Color;
import java.awt.Font;
public class DrawTextBean {
public DrawTextBean(){
}
public DrawTextBean(int x,int y ,String text,Color color,Font font){
this.x=x;
this.y=y;
this.font=font;
this.text=text;
this.color = color;
}
int x;
int y;
Font font;
String text;
Color color;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Font getFont() {
return font;
}
public void setFont(Font font) {
this.font = font;
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
}
需要用到GIFEncoder,Linux下需要安装对应的字库
分享到:
相关推荐
标题提到的"推荐通用文字图片JS不间断滚动封装类 代替Marquee",就是一种利用JavaScript实现的动态效果,它旨在为文字和图片提供一种类似传统的Marquee(滚动条)效果,但更加灵活且易于使用的解决方案。Marquee是...
首先,`ImageClass.cs`是这个封装类的主要代码文件,它应该包含了对System.Drawing命名空间的引用,这是.NET Framework提供的用于处理图像的基础库。在`ImageClass`中,可能定义了一些静态方法或实例方法,如: 1. ...
在Java编程环境中,给图片添加文字或图片水印是一项常见的图像处理任务,广泛应用于版权保护、品牌宣传等领域。本项目“基于Java给图片添加文字或图片水印”旨在教授如何利用Java实现这一功能,适用于大学生的课程...
以上代码片段展示了如何使用封装好的类在图像上添加文字和图片水印。请注意,透明度的设置(alpha参数)通常以0-255的范围表示,其中0完全透明,255完全不透明。 在VS2015环境下,你可以直接运行此源代码,观察水印...
在图像处理领域,叠加文字是一项常见的任务,它用于在图片上添加注释、水印或者日期等信息。这里我们关注的焦点是如何在灰度和24位真彩色图像上实现这一功能。标题“实现在图片上叠加文字”暗示了我们要讨论的是一个...
总之,ASP.NET (#C#)提供了强大的图像处理能力,通过合理利用System.Drawing命名空间中的类,我们可以轻松地实现图片的缩略、添加文字水印和图片水印,从而提升网站的用户体验或保护内容的版权。
在C++编程中,创建一个可以同时显示...这只是一个基础实现,你可以进一步扩展功能,例如支持动态改变图片和文字、添加鼠标滚轮事件等。记住,良好的代码设计和模块化是关键,以便在未来能够轻松维护和扩展你的程序。
- **封装(Encapsulation)**:在C++中,通过类来封装数据和方法,创建自定义控件需要定义一个新的类,继承自现有的控件类,添加额外的功能。 - **重载(Overload)**:可能需要重载某些成员函数,如`paintEvent()...
在IT行业中,尤其是在图像处理领域,为图片添加文字或图片水印是一项常见的需求。这不仅可以保护版权,也可以作为个性化设计的一部分。在这个过程中,我们通常会用到编程语言中的图形库,比如Java中的`Graphics2D`。...
7. **其他高级功能**:例如,插入图片、表格,或者保存和加载文档,这些都是可能通过封装类实现的高级功能。 为了学习和使用这个示例,你需要解压文件"codesc.net",这可能是一个包含VB工程文件(.vbp)、模块文件...
在C#编程中,给图片添加文字或图片水印是一项常见的图像处理任务,这通常用于保护版权、标识品牌或者提供额外信息。在这个场景下,我们可以使用.NET Framework中的Graphics Device Interface Plus (GDI+)库来实现这...
5. **批量处理**:对于批量操作,可以遍历文件夹中的所有图像文件,对每个文件重复上述步骤,将水印添加到每张图片上。 6. **保存结果**:最后,使用Image对象的Save方法将带有水印的新图像保存到目标位置。 在...
通过扩展CListCtrl,我们可以添加自定义绘制功能,从而实现子项显示为图片并叠加文字的效果。 首先,我们需要创建一个自定义的CListCtrl派生类,例如`CImageListCtrl`。在这个派生类中,我们将重写OnDrawItem()和...
在.NET中,可以利用Graphics类的DrawString方法添加文字水印,而DrawImage方法用于添加图片水印。水印的位置通常设置为图片的角落或中央,透明度则可以调整水印与背景的融合程度。 在这个特定的项目中,它使用了...
2. **个性化设计**:在电商网站上,可以为每个商品图片添加特定的文字水印,增加产品特色。 3. **用户体验**:确保水印不影响主要内容的阅读,同时达到提示或保护的目的。 四、进一步探索 在"react-watermark-...
在IT行业中,有时候我们会遇到需要将文字转换为图片的情况,特别是在特定硬件或软件不支持某些文字格式时。这里,我们关注的是一个与热敏打印机相关的案例,其中涉及到将泰文字符转换为图片以便于打印。这个过程通常...
Android图片添加水印是指在Android应用程序中对图片进行水印处理,以便添加版权信息、logo、日期、时间等信息。本篇文章将详细介绍Android图片添加水印的技术实现,包括图片工具类的设计和实现、图片水印的添加、...
本文将深入探讨如何在MFC框架中利用`CToolBar`类来自定义工具栏,包括设置按钮的图片和文字,以及实现工具栏的自由停靠功能。 `CToolBar`是MFC中用于创建和管理工具栏的类,它包含了多个按钮,每个按钮可以包含图像...
在ASP.NET中,开发人员...总之,ASP.NET提供了强大的图像处理能力,允许开发者在服务器端动态地对图片进行各种操作,包括添加文字和绘制图形。理解并熟练运用这些技术,能让你在构建富交互式的Web应用时更加得心应手。
首先,我们要了解JS封装类的基本概念。封装是面向对象编程的核心特性之一,它允许我们将相关的数据和方法组织在一起,形成一个独立的实体,即类。在这个场景中,封装一个滚动类意味着将滚动逻辑、动画控制、用户交互...