導航:首頁 > 文字圖片 > java把文字生成圖片

java把文字生成圖片

發布時間:2023-05-23 12:26:49

① java 16進制字元串轉圖片

String src=...; //從數襪段據庫取得的字元串
String output=...; //定義一個輸出流液好悄用來保存鬧渣圖片
try{
FileOutputStream out = new FileOutputStream(new File(output));
byte[] bytes = src.getBytes();
for(int i=0;i< bytes.length;i+=2){
out.write(charToInt(bytes[i])*16+charToInt(bytes[i+1]));
}
out.close();
}catch(Exception e){
e.printStackTrace();
}

② JAVA IO流中,能否將一個字元串以圖片的格式輸出出來呢,即字元串顯示在圖片上

執行成功後會在D盤根目錄生成一張名為image的jpg格式的圖片,圖片上以紅色Serif體寫著「你好」兩個字——


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class CreateImage {
public static void main(String[] args) throws Exception {
int width = 100;
int height = 100;
String s = "你好";
埋行伏
File file = new File("d:/image.jpg");
帶培
Font font = new Font("Serif", Font.BOLD, 10);
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = (Graphics2D)bi.getGraphics();
g2.setBackground(Color.WHITE);
g2.clearRect(0, 0, width, height);
g2.setPaint(Color.RED);

FontRenderContext context = g2.getFontRenderContext();
Rectangle2D bounds = font.getStringBounds(s, context);
double x = (width - bounds.getWidth()) / 2;
double y = (height - bounds.getHeight()) / 2;
double ascent = -bounds.getY();
double baseY = y + ascent;
彎攜
g2.drawString(s, (int)x, (int)baseY);

ImageIO.write(bi, "jpg", file);
}
}

③ 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在生成圖片的時候,讓文字豎排展示,如何實現

packagehonest.imageio;

importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;

importjavax.imageio.ImageIO;

/**
*圖片操作類
*
*@author
*
*/
publicclassImageUtil{

privateBufferedImageimage;
privateintwidth;//圖片寬度
privateintheight;//圖片高度

publicImageUtil(intwidth,intheight){

this.width=width;
this.height=height;
image=newBufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
}

/**
*創建一個含有指定顏色字元串的圖片
*
*@parammessage
*字元串
*@paramfontSize
*字體大小
*@paramcolor
*字體顏色
*@return圖片
*/
publicBufferedImagedrawString(Stringmessage,intfontSize,Colorcolor){
Graphicsg=image.getGraphics();
g.setColor(color);
Fontf=newFont("宋體",Font.BOLD,fontSize);
g.setFont(f);
intlen=message.length();
g.drawString(message,(width-fontSize*len)/2,
(height+(int)(fontSize/1.5))/2);
g.dispose();
returnimage;
}

/**
*縮放圖片
*
*@paramscaleW
*水平縮放比例
*@paramscaleY
*垂直縮放比例
*@return
*/
publicBufferedImagescale(doublescaleW,doublescaleH){
width=(int)(width*scaleW);
height=(int)(height*scaleH);

BufferedImagenewImage=newBufferedImage(width,height,
image.getType());
Graphicsg=newImage.getGraphics();
g.drawImage(image,0,0,width,height,null);
g.dispose();
image=newImage;
returnimage;
}

/**
*旋轉90度旋轉
*
*@return對應圖片
*/
publicBufferedImagerotate(){
BufferedImagedest=newBufferedImage(height,width,
BufferedImage.TYPE_INT_ARGB);
for(inti=0;i<width;i++)
for(intj=0;j<height;j++){
dest.setRGB(height-j-1,i,image.getRGB(i,j));
}
image=dest;
returnimage;
}

/**
*合並兩個圖像
*
*@paramanotherImage
*另一張圖片
*@return合並後的圖片,如果兩張圖片尺寸不一致,則返回null
*/
publicBufferedImagemergeImage(BufferedImageanotherImage){

intw=anotherImage.getWidth();
inth=anotherImage.getHeight();
if(w!=width||h!=height){
returnnull;
}

for(inti=0;i<w;i++){
for(intj=0;j<h;j++){
intrgb1=image.getRGB(i,j);
intrgb2=anotherImage.getRGB(i,j);

Colorcolor1=newColor(rgb1);
Colorcolor2=newColor(rgb2);

//如果該位置兩張圖片均沒有字體經過,則跳過
//如果跳過,則最後將會是黑色背景
if(color1.getRed()+color1.getGreen()+color1.getBlue()
+color2.getRed()+color2.getGreen()
+color2.getBlue()==0){
continue;
}

Colorcolor=newColor(
(color1.getRed()+color2.getRed())/2,
(color1.getGreen()+color2.getGreen())/2,
(color1.getBlue()+color2.getBlue())/2);
image.setRGB(i,j,color.getRGB());
}
}
returnimage;
}

/**
*保存圖片intrgb1=image.getRGB(i,j);intrgb2=anotherImage.getRGB(i,j);
*rgb2=rgb1&rgb2;image.setRGB(height-i,j,rgb2);
*
*@paramfilePath
*圖片路徑
*/
publicvoidsave(StringfilePath){
try{
ImageIO.write(image,"png",newFile(filePath));
}catch(IOExceptione){
e.printStackTrace();
}
}

/**
*得到對應的圖片
*
*@return
*/
publicBufferedImagegetImage(){
returnimage;
}
}

⑤ Java中如何把文字放到圖片上面去

<style type="text/css">
.tip-tx{
height:25px;
width:122px;
text-align:center;
background-color: #666;
}
.tip-tx a {
color:#fff;
}
</style>
<img style="width: 120px;height: 120px;" src="" />
<div class="tip-tx"><a href="javascript:;" >圖片上傳</a></div>

⑥ java生成jpg圖片 並且實現文字和圖片混排

response.setHeader("Cache-Control","no-cache");
String str="";
String sum="";
for(int i=0;i<4;i++){
Random random=new Random();
int j=Math.round(random.nextFloat()*35);
char x=str.charAt(j);
sum+=x+"";
}
request.getSession().setAttribute("Code",sum);
BufferedImage bufferedImage=new BufferedImage(50,20,BufferedImage.TYPE_3BYTE_BGR);
Graphics2D graphics2D=(Graphics2D)bufferedImage.getGraphics();
graphics2D.setColor(Color.blue);
graphics2D.fill3DRect(0,0,50,20,false);
graphics2D.setColor(Color.YELLOW);
graphics2D.drawString(sum,10,12);
response.setContentType("image/jpeg");
ServletOutputStream output;
try {
output = response.getOutputStream();
JPEGImageEncoder encoder= JPEGCodec.createJPEGEncoder(output);
encoder.encode(bufferedImage);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

⑦ Java如何實現長圖文生成

長圖文生成

很久很久以前,就覺得微博的長圖文實現得非常有意思,將排版直接以最終的圖片輸出,收藏查看分享都很方便,現在則自己動手實現一個簡單版本的

目標

首先定義下我們預期達到的目標:根據文字 + 圖片生成長圖文

目標拆解

⑧ 怎麼樣用Java實現將一張圖片轉成字元畫

#首先在D盤寫一個文件"temp.html",如下內容

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>圖片轉文本</title>
<meta http-equiv="content-type" content="text/html; charset=gbk">
<style type="text/css">
body {
font-family: 宋體; line-height: 0.8em; letter-spacing: 0px; font-size: 8px;
}
</style>
</head>

<body>
${content}
</body>
</html>

#在D盤放一個圖片(放小一點的)"a.jpg"

#運行如下JAVA代碼:
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.imageio.ImageIO;

public class Test {

/** 此處設置灰度字元,此處只用十個字元,可以設置更多 */
private static char[] cs = new char[] { '.', ',', '*', '+', '=', '&', '$', '此則@', '#', ' ' };

public static void main(String[] args) throws IOException {

// 讀取圖片
BufferedImage bfedimage = ImageIO.read(new File("D:\\a.jpg"));

// 圖片轉字元串後的數組
char[][] css = new char[bfedimage.getWidth()][bfedimage.getHeight()];

for (int x = 0; x < bfedimage.getWidth(); x++) {
for (int y = 0; y < bfedimage.getHeight(); y++) {
int rgb = bfedimage.getRGB(x, y);
Color c = new Color(rgb);
// 得到灰度值悄搜
int cc = (c.getRed() + c.getGreen() + c.getBlue()) / 3;
css[x][y] = cs[(int) ((cc * 10 - 1) / 255)];
}
}

// 取得模板HTML
String temp = readFile(new File("D:\\temp.html"),"gbk");
StringBuffer sb = new StringBuffer();

// 開始拼接內容
for (int y = 0; y < css[0].length; y++) {
for (int x = 0; x < css.length; x++) {
sb.append(css[x][y]);
}
sb.append("\r\n");
}

System.out.println(sb.toString());
// 生啟扒歷成文件
String content = toHTML(sb.toString());
String filecontent = replaceStrAllNotBack(temp, "${content}", content);
writeFile(new File("D:\\content.html"), filecontent, "gbk");
}

public static String toHTML(String s) {
s = s.replaceAll("&", "&");
s = s.replaceAll(" ", "");
s = s.replaceAll(">", ">");
s = s.replaceAll("<", "<");
s = s.replaceAll("\"", """);
s = s.replaceAll("\\\r\\\n", "<br/>");
s = s.replaceAll("\\\r", "<br/>");
s = s.replaceAll("\\\n", "<br/>");
return s;
}

public static String replaceStrAllNotBack(String str, String strSrc, String strDes) {
StringBuffer sb = new StringBuffer(str);
int index = 0;
while ((index = sb.indexOf(strSrc, index)) != -1) {
sb.replace(index, index + strSrc.length(), strDes);
index += strDes.length();
}
return sb.toString();
}

/**
* 讀文件(使用默認編碼)
*
* @param file
* @return 文件內容
* @throws IOException
*/
public static String readFile(File file, String charset) throws IOException {
InputStreamReader fr = new InputStreamReader(new FileInputStream(file), charset);
StringBuffer sb = new StringBuffer();
char[] bs = new char[1024];
int i = 0;
while ((i = fr.read(bs)) != -1) {
sb.append(bs, 0, i);
}
fr.close();
return sb.toString();
}

/**
* 寫文件
*
* @param file
* @param string
* 字元串
* @param encoding
* 編碼
* @return 文件大小
* @throws IOException
*/
public static int writeFile(File file, String string, String encoding) throws IOException {
FileOutputStream fos = new FileOutputStream(file);
try {
byte[] bs = string.getBytes(encoding);
fos.write(bs);
return bs.length;
} finally {
fos.close();
}
}
}
#打開"D:\content.html"文件看效果吧。

有什麼問題可以聯系我。

⑨ java文本文件轉化為圖片文件怎麼弄

文件在計算機中都是以二進制保存的,但系統是以文件頭來區分各種文件格式的。

也就是說,僅僅更改後綴名是不行的。


按照你說想的,可以這么來做:

1、讀取txt文本的每一行

2、創建BufferedImage圖片,然後在圖片上畫讀取到的文本


下面給出示常式序:


測試類 TextToImageExample.java

importjava.io.File;
importjava.util.Scanner;

/**
*文本轉圖片測試類
*@authorYY29242014/11/18
*@version1.0
*/
publicclassTextToImageExample{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
System.out.print("輸入TXT文本名稱(例如:D:/java.txt):");
StringtextFileName=in.nextLine();
System.out.print("輸入保存的圖片名稱(例如:D:/java.jpg):");
StringimageFileName=in.nextLine();

TextToImageconvert=newTextToImage(newFile(textFileName),newFile(imageFileName));
booleansuccess=convert.convert();
System.out.println("文本轉圖片:"+(success?"成功":"失敗"));
}
}


文本轉圖片類 TextToImage.java

importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.image.BufferedImage;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.IOException;
importcom.sun.image.codec.jpeg.JPEGImageEncoder;
importcom.sun.image.codec.jpeg.JPEGCodec;

/**
*文本轉圖片類
*@authorYY29242014/11/18
*@version1.0
*/
publicclassTextToImage{
/**文本文件*/
privateFiletextFile;
/**圖片文件*/
privateFileimageFile;

/**圖片*/
privateBufferedImageimage;
/**圖片寬度*/
privatefinalintIMAGE_WIDTH=400;
/**圖片高度*/
privatefinalintIMAGE_HEIGHT=600;
/**圖片類型*/
privatefinalintIMAGE_TYPE=BufferedImage.TYPE_INT_RGB;

/**
*構造函數
*@paramtextFile文本文件
*@paramimageFile圖片文件
*/
publicTextToImage(FiletextFile,FileimageFile){
this.textFile=textFile;
this.imageFile=imageFile;
this.image=newBufferedImage(IMAGE_WIDTH,IMAGE_HEIGHT,IMAGE_TYPE);
}

/**
*將文本文件里文字,寫入到圖片中保存
*@returnbooleantrue,寫入成功;false,寫入失敗
*/
publicbooleanconvert(){

//讀取文本文件
BufferedReaderreader=null;
try{
reader=newBufferedReader(newFileReader(textFile));
}catch(FileNotFoundExceptione){
e.printStackTrace();
returnfalse;
}

//獲取圖像上下文
Graphicsg=createGraphics(image);
Stringline;
//圖片中文本行高
finalintY_LINEHEIGHT=15;
intlineNum=1;
try{
while((line=reader.readLine())!=null){
g.drawString(line,0,lineNum*Y_LINEHEIGHT);
lineNum++;
}
g.dispose();

//保存為jpg圖片
FileOutputStreamfos=newFileOutputStream(imageFile);
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(fos);
encoder.encode(image);
fos.close();
}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}
returntrue;
}

/**
*獲取到圖像上下文
*@paramimage圖片
*@returnGraphics
*/
privateGraphicscreateGraphics(BufferedImageimage){
Graphicsg=image.createGraphics();
g.setColor(Color.WHITE);//設置背景色
g.fillRect(0,0,IMAGE_WIDTH,IMAGE_HEIGHT);//繪制背景
g.setColor(Color.BLACK);//設置前景色
g.setFont(newFont("微軟雅黑",Font.PLAIN,12));//設置字體
returng;
}


}

特別注意:程序中使用到了com.sun.image.codec.jpeg.JPEGImageEncoder和 com.sun.image.codec.jpeg.JPEGCodec ,這 兩個是sun的專用API,Eclipse會報錯。


解決辦法:

Eclipse軟體,Windows->Preferences->Java->Complicer->Errors/Warnings,Deprecated and restricted API->Forbidden reference 改為 Warnning。

如果還是報錯,在工程上build path,先移除JRE System Library,然後再添加JRE System Library。

⑩ java自定義字體文字和圖片生成新圖片(高分)

這個技術好實現,思想如下:

  1. 用js控制;

  2. 再根據文字與形式生成圖片;

  3. 再輸出即可。


我以前做過。

閱讀全文

與java把文字生成圖片相關的資料

熱點內容
結婚紅色美甲圖片大全 瀏覽:744
qq照片秀圖片女生 瀏覽:11
黑色頭像圖片男生寸頭專用 瀏覽:32
樹的鉛筆畫簡單圖片 瀏覽:428
圖片怎麼加網址 瀏覽:695
黃襯衫怎麼搭配圖片 瀏覽:671
無牽無掛的圖片配文字 瀏覽:385
圖片裡面的表格如何轉換成word 瀏覽:411
閻維文可愛圖片 瀏覽:875
黑白文字圖片沙雕 瀏覽:999
天氣冷選衣服的圖片 瀏覽:709
旅拍婚紗發型圖片 瀏覽:564
如何讓圖片對齊幻燈片左側邊緣 瀏覽:937
如何把圖片設計成班級群背景 瀏覽:952
累癱的圖片可愛表情 瀏覽:159
哭的圖片搞笑可愛表情 瀏覽:349
帽筒底款圖片大全 瀏覽:912
鎖骨紋身圖案男生圖片真人 瀏覽:660
馬尾發型圖片女 瀏覽:710
動漫小說圖片人物高清 瀏覽:602