「java文字转logo」java文字转语音真人发声

博主:adminadmin 2023-03-20 08:48:10 363

今天给各位分享java文字转logo的知识,其中也会对java文字转语音真人发声进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java根据文字旋转图片方法

1、java本身肯定有这样的api来实现基本的文字转图片功能,果不其然,经过一番简单搜索,发现java.awt.Graphics类有一个方法,如下

2、经过简单测试,发现上述方法果然只能实现基本的文字转图片功能,无法换行,然后搜到一篇博文java文字转换成图片输出,算是一个比较完整的demo了,笔者的最终代码就是在此文代码的基础上修改而成,此demo中的文字也就一行不到的文字,所以无法看到换行的效果

3、刚开始打出来的图片上文字是方块乱码,解决方法是先在jdk目录下添加相应字体,如果依然乱码,要修改ide编辑器bin目录下的配置文件

4、为了实现真正的换行效果,笔者在drawstring方法外围加了一个for循环,就可以实现换行效果

5、如果文字过多的话,可能一张图片放不下,之前的做法是图片的高度不固定,根据文字的行数来确定,发现那样做的话,文字非常多的话图片就非常长,所以还是要生成多张图片,图片的张数就通过文字的总行数除以每张图片(固定宽高)的行数来得到

6、如果一行文字过多的话,超过图片宽度的文字会被隐藏掉,所以需要提前对文字进行处理,使用集合list来处理,先获取每个字的宽度,再获取每行能放多少字,再判断如果一行文字大于每行能存放的字数时,就进行切割处理

怎样用JAVA实现电子印章

参考如下代码

package com.wonders.cop.billing.util;

import java.awt.AlphaComposite;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.RenderingHints;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import javax.imageio.ImageIO;

public class ImageMarkLogoUtil {

// 水印透明度

private static float alpha = 1f;

// 水印横向位置

private static int positionWidth = 82;

// 水印纵向位置

private static int positionHeight = 545;

// 水印文字字体

private static Font font = new Font("宋体", Font.PLAIN, 13);

// 水印文字颜色

private static Color color = Color.black;

public static void main(String[] args) {

String srcImgPath = "d:/888880002302900_web.jpg";

String targerTextPath = "d:/qie_text.jpg";

ImageMarkLogoUtil

.markImageByTexts(testValue(),

BillDetailImagePosition.getPosition("888880002302900"), srcImgPath,

targerTextPath);

}

public static Map testValue() {

MapString, String value = new HashMapString, String();

value.put("feedPrice", "15.1");

value.put("feedCount", "20");

value.put("nowNum", "124");

value.put("drainageCount", "55");

value.put("drainagePrice", "1.5");

value.put("feedCost", "66");

value.put("cost", "66");

value.put("drainageCost", "100");

value.put("barcode", "10101010101010101");

value.put("nextCopy", "2014-12-10");

value.put("waterType", "居民生活用水");

value.put("meterReader", "测试人员");

value.put("copyNumber", "741sg");

value.put("prevCarryOver", "0.25");

value.put("nowCarryOver", "2.12");

value.put("openDate", "20141002");

value.put("nextMonth", "201402 ");

value.put("remark", "您缴付的2013年03月30.80元水费,我公司已收到,谢谢!");

value.put("detailStatus", "00");

value.put("billStatus", "00");

value.put("prevMonth", "201406");

value.put("lastPayDate", "20140112");

value.put("companyName", "市北水");

value.put("type", "1");

value.put("amount", "58.1");

value.put("address", "浦秀路220弄10号101");

value.put("year","2014");

value.put("month", "04");

value.put("billId", "11111");

value.put("account", "38445450");

value.put("companyId", "888880002302900");

value.put("realName", "姚航");

return value;

}

/**

* 给图片添加水印文字、可设置水印文字的旋转角度

*

* @param logoText

* @param srcImgPath

* @param targerPath

* @param degree

*/

public static void markImageByTexts(MapString, String value,

MapString, String[] position, String srcImgPath, String targerPath) {

InputStream is = null;

OutputStream os = null;

try {

// 1、源图片

Image srcImg = ImageIO.read(new File(srcImgPath));

BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),

srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);

// 2、得到画笔对象

IteratorString positionIter = position.keySet().iterator();

String key = "";

String logotext = "";

String[] xy;

while (positionIter.hasNext()) {

key = positionIter.next();

xy = position.get(key);

logotext = value.get(key);

System.out.println("key:"+key+",value:"+logotext);

if (xy != null xy.length == 2)

printText(srcImg, buffImg, logotext,

Integer.valueOf(xy[0]), Integer.valueOf(xy[1]));

}

// 10、生成图片

os = new FileOutputStream(targerPath);

ImageIO.write(buffImg, "JPG", os);

System.out.println("图片完成添加水印文字");

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (null != is)

is.close();

} catch (Exception e) {

e.printStackTrace();

}

try {

if (null != os)

os.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

/**

* 在图片上打印文字

*

* @param srcImg

* @param buffImg

* @param logoText

* @return

*/

private static void printText(Image srcImg, BufferedImage buffImg,

String logoText, Integer positionX, Integer PositionY) {

Graphics2D g = buffImg.createGraphics();

// 3、设置对线段的锯齿状边缘处理

g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,

RenderingHints.VALUE_INTERPOLATION_BILINEAR);

g.drawImage(

srcImg.getScaledInstance(srcImg.getWidth(null),

srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);

// 5、设置水印文字颜色

g.setColor(color);

// 6、设置水印文字Font

g.setFont(font);

// 7、设置水印文字透明度

g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,

alpha));

// 8、第一参数-设置的内容,后面两个参数-文字在图片上的坐标位置(x,y)

g.drawString(logoText, positionX, PositionY);

// 9、释放资源

g.dispose();

}

}

java怎么给word文档加水印

可以使用Free Spire.Doc for Java在word文档中添加文本水印或图片水印。Free Spire.Doc for Java下载链接:网页链接

1.添加文本水印——代码如下:

import com.spire.doc.*;

import com.spire.doc.documents.WatermarkLayout;

import java.awt.*;

public class WordTextWatermark {

public static void main(String[] args) {

Document document = new Document();

document.loadFromFile("Sample.docx");

insertTextWatermark(document.getSections().get(0));

}

private static void insertTextWatermark(Section section) {

TextWatermark txtWatermark = new TextWatermark();

txtWatermark.setText("内部使用");

txtWatermark.setFontSize(40);

txtWatermark.setColor(Color.red);

txtWatermark.setLayout(WatermarkLayout.Diagonal);

section.getDocument().setWatermark(txtWatermark);

}

}

2.添加图片水印——代码如下:

import com.spire.doc.*;

public class WordImageWatermark {

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

Document document = new Document();

document.loadFromFile("Sample.docx");

PictureWatermark picture = new PictureWatermark();

picture.setPicture("logo.png");

picture.setScaling(5);

picture.isWashout(false);

document.setWatermark(picture);

document.saveToFile("out/result2.docx",FileFormat.Docx )

}

}

java怎么生成带logo二维码

1、下载生成二维码所需要的jar包qrcode.jar;

2、直接上生成二维码的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);  

  

            // System.out.println(content);  

            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生成的二维码中间logo怎么改成文字

package com.luo.wctweb.util;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import javax.imageio.ImageIO;

import javax.servlet.http.HttpServletRequest;

import com.google.zxing.BarcodeFormat;

import com.google.zxing.EncodeHintType;

import com.google.zxing.MultiFormatWriter;

import com.google.zxing.WriterException;

import com.google.zxing.common.BitMatrix;

import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import com.lz.lsf.util.Base64;

/** * @Description: (二维码) * @author:luoguohui * @date:2015-10-29 下午05:27:13 */

public class ZXingCode {

private static final int QRCOLOR = 0xFF000000; //默认是黑色

private static final int BGWHITE = 0xFFFFFFFF; //背景颜色

public static void main(String[] args) throws WriterException

{

try

{

getLogoQRCode("", null, "跳转到百度的二维码");

}

catch (Exception e)

{

e.printStackTrace();

}

}

/** * 生成带logo的二维码图片 * * @param qrPic * @param logoPic */

public static String getLogoQRCode(String qrUrl,HttpServletRequest request,String productName)

{

// String filePath = request.getSession().getServletContext().getRealPath("/") + "resources/images/logoImages/llhlogo.png";

//filePath是二维码logo的路径,但是实际中我们是放在项目的某个路径下面的,所以路径用上面的,把下面的注释就好

String filePath = "C:/Users/luoguohui/Desktop/78310a55b319ebc4fa3aef658126cffc1f17168f.jpg"; //TODO

String content = qrUrl;

try

{

ZXingCode zp = new ZXingCode();

BufferedImage bim = zp.getQR_CODEBufferedImage(content, BarcodeFormat.QR_CODE, 400, 400, zp.getDecodeHintType());

return zp.addLogo_QRCode(bim, new File(filePath), new LogoConfig(), productName);

}

catch (Exception e)

{

e.printStackTrace();

}

return null;

}

/** * 给二维码图片添加Logo * * @param qrPic * @param logoPic */

public String addLogo_QRCode(BufferedImage bim, File logoPic, LogoConfig logoConfig, String productName)

{

try

{

/** * 读取二维码图片,并构建绘图对象 */

BufferedImage image = bim;

Graphics2D g = image.createGraphics();

/** * 读取Logo图片 */

BufferedImage logo = ImageIO.read(logoPic);

/** * 设置logo的大小,本人设置为二维码图片的20%,因为过大会盖掉二维码 */

int widthLogo = logo.getWidth(null)image.getWidth()*3/10?(image.getWidth()*3/10):logo.getWidth(null),

heightLogo = logo.getHeight(null)image.getHeight()*3/10?(image.getHeight()*3/10):logo.getWidth(null);

/** * logo放在中心 */

int x = (image.getWidth() - widthLogo) / 2;

int y = (image.getHeight() - heightLogo) / 2;

/** * logo放在右下角 * int x = (image.getWidth() - widthLogo); * int y = (image.getHeight() - heightLogo); */

//开始绘制图片

g.drawImage(logo, x, y, widthLogo, heightLogo, null);

// g.drawRoundRect(x, y, widthLogo, heightLogo, 15, 15);

// g.setStroke(new BasicStroke(logoConfig.getBorder()));

// g.setColor(logoConfig.getBorderColor());

// g.drawRect(x, y, widthLogo, heightLogo);

g.dispose();

//把商品名称添加上去,商品名称不要太长哦,这里最多支持两行。太长就会自动截取啦

if (productName != null !productName.equals("")) {

//新的图片,把带logo的二维码下面加上文字

BufferedImage outImage = new BufferedImage(400, 445, BufferedImage.TYPE_4BYTE_ABGR);

Graphics2D outg = outImage.createGraphics();

//画二维码到新的面板

outg.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);

//画文字到新的面板

outg.setColor(Color.BLACK);

outg.setFont(new Font("宋体",Font.BOLD,30)); //字体、字型、字号

int strWidth = outg.getFontMetrics().stringWidth(productName);

if (strWidth 399) {

// //长度过长就截取前面部分

// outg.drawString(productName, 0, image.getHeight() + (outImage.getHeight() - image.getHeight())/2 + 5 ); //画文字

//长度过长就换行

String productName1 = productName.substring(0, productName.length()/2);

String productName2 = productName.substring(productName.length()/2, productName.length());

int strWidth1 = outg.getFontMetrics().stringWidth(productName1);

int strWidth2 = outg.getFontMetrics().stringWidth(productName2);

outg.drawString(productName1, 200 - strWidth1/2, image.getHeight() + (outImage.getHeight() - image.getHeight())/2 + 12 );

BufferedImage outImage2 = new BufferedImage(400, 485, BufferedImage.TYPE_4BYTE_ABGR);

Graphics2D outg2 = outImage2.createGraphics();

outg2.drawImage(outImage, 0, 0, outImage.getWidth(), outImage.getHeight(), null);

outg2.setColor(Color.BLACK);

outg2.setFont(new Font("宋体",Font.BOLD,30)); //字体、字型、字号

outg2.drawString(productName2, 200 - strWidth2/2, outImage.getHeight() + (outImage2.getHeight() - outImage.getHeight())/2 + 5 );

outg2.dispose();

outImage2.flush();

outImage = outImage2;

}else {

outg.drawString(productName, 200 - strWidth/2 , image.getHeight() + (outImage.getHeight() - image.getHeight())/2 + 12 ); //画文字

}

outg.dispose();

outImage.flush();

image = outImage;

}

logo.flush();

image.flush();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

baos.flush();

ImageIO.write(image, "png", baos);

//二维码生成的路径,但是实际项目中,我们是把这生成的二维码显示到界面上的,因此下面的折行代码可以注释掉

//可以看到这个方法最终返回的是这个二维码的imageBase64字符串

//前端用 img src="data:image/png;base64,${imageBase64QRCode}"/ 其中${imageBase64QRCode}对应二维码的imageBase64字符串

ImageIO.write(image, "png", new File("C:/Users/luoguohui/Desktop/TDC-" + new Date().getTime() + "test.png")); //TODO

String imageBase64QRCode = Base64.byteArrayToBase64(baos.toByteArray());

baos.close();

return imageBase64QRCode;

}

catch (Exception e)

{

e.printStackTrace();

}

return null;

}

/** * 构建初始化二维码 * * @param bm * @return */

public BufferedImage fileToBufferedImage(BitMatrix bm)

{

BufferedImage image = null;

try

{

int w = bm.getWidth(), h = bm.getHeight();

image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);

for (int x = 0; x w; x++)

{

for (int y = 0; y h; y++)

{

image.setRGB(x, y, bm.get(x, y) ? 0xFF000000 : 0xFFCCDDEE);

}

}

}

catch (Exception e)

{

e.printStackTrace();

}

return image;

}

/** * 生成二维码bufferedImage图片 * * @param content * 编码内容 * @param barcodeFormat * 编码类型 * @param width * 图片宽度 * @param height * 图片高度 * @param hints * 设置参数 * @return */

public BufferedImage getQR_CODEBufferedImage(String content, BarcodeFormat barcodeFormat, int width, int height, MapEncodeHintType, ? hints)

{

MultiFormatWriter multiFormatWriter = null;

BitMatrix bm = null;

BufferedImage image = null;

try

{

multiFormatWriter = new MultiFormatWriter();

// 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数

bm = multiFormatWriter.encode(content, barcodeFormat, width, height, hints);

int w = bm.getWidth();

int h = bm.getHeight();

image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);

// 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF)白(0xFF000000)两色

for (int x = 0; x w; x++)

{

for (int y = 0; y h; y++)

{

image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);

}

}

}

catch (WriterException e)

{

e.printStackTrace();

}

return image;

}

/** * 设置二维码的格式参数 * * @return */

public MapEncodeHintType, Object getDecodeHintType()

{

// 用于设置QR二维码参数

MapEncodeHintType, Object hints = new HashMapEncodeHintType, Object();

// 设置QR二维码的纠错级别(H为最高级别)具体级别信息

hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);

// 设置编码方式

hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

hints.put(EncodeHintType.MARGIN, 0);

hints.put(EncodeHintType.MAX_SIZE, 350);

hints.put(EncodeHintType.MIN_SIZE, 100);

return hints;

}

}

class LogoConfig

{

// logo默认边框颜色

public static final Color DEFAULT_BORDERCOLOR = Color.WHITE;

// logo默认边框宽度

public static final int DEFAULT_BORDER = 2;

// logo大小默认为照片的1/5

public static final int DEFAULT_LOGOPART = 5;

private final int border = DEFAULT_BORDER;

private final Color borderColor;

private final int logoPart;

/** * Creates a default config with on color {@link #BLACK} and off color * {@link #WHITE}, generating normal black-on-white barcodes. */

public LogoConfig()

{

this(DEFAULT_BORDERCOLOR, DEFAULT_LOGOPART);

}

public LogoConfig(Color borderColor, int logoPart)

{

this.borderColor = borderColor;

this.logoPart = logoPart;

}

public Color getBorderColor()

{

return borderColor;

}

public int getBorder()

{

return border;

}

public int getLogoPart()

{

return logoPart;

}

}

关于java文字转logo和java文字转语音真人发声的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。