本文目录一览:
- JAVA怎样将PPTX文件转换成图片
- java怎么生成带用户微信头像的图片,并把这张图片发送给用户。
- java在生成图片的时候,让文字竖排展示,如何实现?
- java中怎么将word文档怎么生成图片
- java如何生成颜色相间的条纹图片
JAVA怎样将PPTX文件转换成图片
关键代码就是: rtruns[l].setFontName("宋体");
import java.awt.Dimension;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.record.Slide;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
public class PPTtoImage {
public static void main(String[] args) {
// 读入PPT文件
File file = new File("F:/20110618.ppt");
doPPTtoImage(file);
}
public static boolean doPPTtoImage(File file) {
boolean isppt = checkFile(file);
if (!isppt) {
System.out.println("The image you specify don't exit!");
return false;
}
try {
FileInputStream is = new FileInputStream(file);
SlideShow ppt = new SlideShow(is);
is.close();
Dimension pgsize = ppt.getPageSize();
org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
for (int i = 0; i < slide.length; i++) {
System.out.print("第" + i + "页。");
TextRun[] truns = slide[i].getTextRuns();
for (int k = 0; k < truns.length; k++) {
RichTextRun[] rtruns = truns[k].getRichTextRuns();
for (int l = 0; l < rtruns.length; l++) {
int index = rtruns[l].getFontIndex();
String name = rtruns[l].getFontName();
rtruns[l].setFontIndex(1);
rtruns[l].setFontName("宋体");
System.out.println(rtruns[l].getText());
}
}
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
slide[i].draw(graphics);
// 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径
FileOutputStream out = new FileOutputStream("F:/test/pict_" + (i + 1) + ".jpeg");
javax.imageio.ImageIO.write(img, "jpeg", out);
out.close();
}
System.out.println("success!!");
return true;
} catch (FileNotFoundException e) {
System.out.println(e);
// System.out.println("Can't find the image!");
} catch (IOException e) {
}
return false;
}
// function 检查文件是否为PPT
public static boolean checkFile(File file) {
boolean isppt = false;
String filename = file.getName();
String suffixname = null;
if (filename != null && filename.indexOf(".") != -1) {
suffixname = filename.substring(filename.indexOf("."));
if (suffixname.equals(".ppt")) {
isppt = true;
}
return isppt;
} else {
return isppt;
}
}
}
java怎么生成带用户微信头像的图片,并把这张图片发送给用户。
- 下载生成二维码所需要的jar包qrcode.jar;
- 直接上生成二维码的java代码
//需要导入的包
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
/**
* 生成二维码(QRCode)图片
* @param content 二维码图片的内容
* @param imgPath 生成二维码图片完整的路径
* @param ccbpath 二维码图片中间的logo路径
*/
public static int createQRCode(String content, String imgPath, String ccbPath) {
try {
Qrcode qrcodeHandler = new Qrcode();
qrcodeHandler.setQrcodeErrorCorrect('M');
qrcodeHandler.setQrcodeEncodeMode('B');
qrcodeHandler.setQrcodeVersion(7);
byte[] contentBytes = content.getBytes("gb2312");
//构造一个BufferedImage对象 设置宽、高
BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);
Graphics2D gs = bufImg.createGraphics();
gs.setBackground(Color.WHITE);
gs.clearRect(0, 0, 140, 140);
// 设定图像颜色 BLACK
gs.setColor(Color.BLACK);
// 设置偏移量 不设置可能导致解析出错
int pixoff = 2;
// 输出内容 二维码
if (contentBytes.length > 0 && contentBytes.length < 120) {
boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
for (int i = 0; i < codeOut.length; i++) {
for (int j = 0; j < codeOut.length; j++) {
if (codeOut[j][i]) {
gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
}
}
}
} else {
System.err.println("QRCode content bytes length = " + contentBytes.length + " not in [ 0,120 ]. ");
return -1;
}
Image img = ImageIO.read(new File(ccbPath));//实例化一个Image对象。
gs.drawImage(img, 55, 55, 30, 30, null);
gs.dispose();
bufImg.flush();
// 生成二维码QRCode图片
File imgFile = new File(imgPath);
ImageIO.write(bufImg, "png", imgFile);
} catch (Exception e) {
e.printStackTrace();
return -100;
}
return 0;
}
来自网友 孤独青鸟的博客
java在生成图片的时候,让文字竖排展示,如何实现?
package honest.imageio;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* 图片操作类
*
* @author
*
*/
public class ImageUtil {
private BufferedImage image;
private int width; // 图片宽度
private int height; // 图片高度
public ImageUtil(int width, int height) {
this.width = width;
this.height = height;
image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
}
/**
* 创建一个含有指定颜色字符串的图片
*
* @param message
* 字符串
* @param fontSize
* 字体大小
* @param color
* 字体颜色
* @return 图片
*/
public BufferedImage drawString(String message, int fontSize, Color color) {
Graphics g = image.getGraphics();
g.setColor(color);
Font f = new Font("宋体", Font.BOLD, fontSize);
g.setFont(f);
int len = message.length();
g.drawString(message, (width - fontSize * len) / 2,
(height + (int) (fontSize / 1.5)) / 2);
g.dispose();
return image;
}
/**
* 缩放图片
*
* @param scaleW
* 水平缩放比例
* @param scaleY
* 垂直缩放比例
* @return
*/
public BufferedImage scale(double scaleW, double scaleH) {
width = (int) (width * scaleW);
height = (int) (height * scaleH);
BufferedImage newImage = new BufferedImage(width, height,
image.getType());
Graphics g = newImage.getGraphics();
g.drawImage(image, 0, 0, width, height, null);
g.dispose();
image = newImage;
return image;
}
/**
* 旋转90度旋转
*
* @return 对应图片
*/
public BufferedImage rotate() {
BufferedImage dest = new BufferedImage(height, width,
BufferedImage.TYPE_INT_ARGB);
for (int i = 0; i < width; i++)
for (int j = 0; j < height; j++) {
dest.setRGB(height - j - 1, i, image.getRGB(i, j));
}
image = dest;
return image;
}
/**
* 合并两个图像
*
* @param anotherImage
* 另一张图片
* @return 合并后的图片,如果两张图片尺寸不一致,则返回null
*/
public BufferedImage mergeImage(BufferedImage anotherImage) {
int w = anotherImage.getWidth();
int h = anotherImage.getHeight();
if (w != width || h != height) {
return null;
}
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
int rgb1 = image.getRGB(i, j);
int rgb2 = anotherImage.getRGB(i, j);
Color color1 = new Color(rgb1);
Color color2 = new Color(rgb2);
// 如果该位置两张图片均没有字体经过,则跳过
// 如果跳过,则最后将会是黑色背景
if (color1.getRed() + color1.getGreen() + color1.getBlue()
+ color2.getRed() + color2.getGreen()
+ color2.getBlue() == 0) {
continue;
}
Color color = new Color(
(color1.getRed() + color2.getRed()) / 2,
(color1.getGreen() + color2.getGreen()) / 2,
(color1.getBlue() + color2.getBlue()) / 2);
image.setRGB(i, j, color.getRGB());
}
}
return image;
}
/**
* 保存图片
*
* @param filePath
* 图片路径
*/
public void save(String filePath) {
try {
ImageIO.write(image, "png", new File(filePath));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 得到对应的图片
*
* @return
*/
public BufferedImage getImage() {
return image;
}
}
java中怎么将word文档怎么生成图片
public class CreateWordDemo {
public void createDocContext(String file)
throws DocumentException, IOException {
// 设置纸张大小
Document document = new Document(PageSize.A4);
// 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
RtfWriter2.getInstance(document, new FileOutputStream(file));
document.open();
// 设置中文字体
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
// 标题字体风格
Font titleFont = new Font(bfChinese, 12, Font.BOLD);
// 正文字体风格
Font contextFont = new Font(bfChinese, 10, Font.NORMAL);
Paragraph title = new Paragraph("标题");
// 设置标题格式对齐方式
title.setAlignment(Element.ALIGN_CENTER);
title.setFont(titleFont);
document.add(title);
String contextString = "iText是一个能够快速产生PDF文件的java类库。"
+ " \n" // 换行
+ "iText的java类对于那些要产生包含文本,"
+ "表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。"
+ "使用iText与PDF能够使你正确的控制Servlet的输出。";
Paragraph context = new Paragraph(contextString);
// 正文格式左对齐
context.setAlignment(Element.ALIGN_LEFT);
context.setFont(contextFont);
// 离上一段落(标题)空的行数
context.setSpacingBefore(5);
// 设置第一行空的列数
context.setFirstLineIndent(20);
document.add(context);
// 利用类FontFactory结合Font和Color可以设置各种各样字体样式
Paragraph underline = new Paragraph("下划线的实现", FontFactory.getFont(
FontFactory.HELVETICA_BOLDOBLIQUE, 18, Font.UNDERLINE, new Color(0, 0,
255)));
document.add(underline);
// 设置 Table 表格
Table aTable = new Table(3);
int width[] = { 25, 25, 50 };
aTable.setWidths(width); // 设置每列所占比例
aTable.setWidth(90); // 占页面宽度 90%
aTable.setAlignment(Element.ALIGN_CENTER); // 居中显示
aTable.setAlignment(Element.ALIGN_MIDDLE); // 纵向居中显示
aTable.setAutoFillEmptyCells(true); // 自动填满
aTable.setBorderWidth(1); // 边框宽度
aTable.setBorderColor(new Color(0, 125, 255)); // 边框颜色
aTable.setPadding(2); // 衬距,看效果就知道什么意思了
aTable.setSpacing(3); // 即单元格之间的间距
aTable.setBorder(2); // 边框
// 设置表头
Cell haderCell = new Cell("表格表头");
haderCell.setHeader(true);
haderCell.setColspan(3);
aTable.addCell(haderCell);
aTable.endHeaders();
Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);
Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据", fontChinese));
cell.setVerticalAlignment(Element.ALIGN_TOP);
cell.setBorderColor(new Color(255, 0, 0));
cell.setRowspan(2);
aTable.addCell(cell);
aTable.addCell(new Cell("#1"));
aTable.addCell(new Cell("#2"));
aTable.addCell(new Cell("#3"));
aTable.addCell(new Cell("#4"));
Cell cell3 = new Cell(new Phrase("一行三列数据", fontChinese));
cell3.setColspan(3);
cell3.setVerticalAlignment(Element.ALIGN_CENTER);
aTable.addCell(cell3);
document.add(aTable);
document.add(new Paragraph("\n"));
// 添加图片 Image.getInstance即可以放路径又可以放二进制字节流
Image img = Image.getInstance("d:\\img01800.jpg");
img.setAbsolutePosition(0, 0);
img.setAlignment(Image.RIGHT); // 设置图片显示位置
img.scaleAbsolute(60, 60); // 直接设定显示尺寸
// img.scalePercent(50); //表示显示的大小为原尺寸的50%
// img.scalePercent(25, 12); //图像高宽的显示比例
// img.setRotation(30); //图像旋转一定角度
document.add(img);
document.close();
}
public static void main(String[] args) {
CreateWordDemo word = new CreateWordDemo();
String file = "d:/demo1.doc";
try {
word.createDocContext(file);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
java如何生成颜色相间的条纹图片
这是简单的初步实现,你可以借鉴一下哈
package v01;
import javax.swing.*;
import java.awt.*;
public class ColorP extends JFrame {
public ColorP() {
this.add(new NewPanel());
}
public static void main(String[] args) {
ColorP frame = new ColorP();
frame.setTitle("Content");
frame.setSize(300, 150);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class NewPanel extends JPanel { // 扩展JPanel
public NewPanel() {
}
protected void paintComponent(Graphics g) { // 运用画笔Graphics绘制
super.paintComponent(g); // 添加画笔
int[] x = new int[4];
int[] y = new int[4];
for (int i = 0; i < 10; i++) {
x[0] = i * 40;
y[0] = 0;
x[1] = x[0] + 40;
y[1] = 0;
x[2] = 0;
y[2] = (i + 1) * 40;
x[3] = 0;
y[3] = y[2] - 40;
if (i % 2 == 0)
g.setColor(Color.black);
else
g.setColor(Color.yellow);
g.fillPolygon(x, y, x.length);
}
}
}
}