java实现图片上插入文字并保存

网友投稿 321 2023-01-04


java实现图片上插入文字并保存

这两天通过在网上查阅资料,了解了在图片上插入文字并保存的功能,下面记录一下。

工具类:PrintImage。

package com.learning.utils;

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.awt.Shape;

import java.awt.font.GlyphVector;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.net.URL;

import javax.imageio.ImageIO;

public class PrintImage {

private Font font = new Font("黑体", Font.PLAIN, 25); // 添加字体的属性设置

private Graphics2D g = null;

private int fontsize = 0;

/**

* 导入本地图片到缓冲区

*/

public BufferedImage loadImageLocal(String imgName) {

try {

return ImageIO.read(new File(imgName));

} catch (IOException e) {

System.out.println(e.getMessage());

}

return null;

}

/**

* 导入网络图片到缓冲区

*/

public BufferedImage loadImageUrl(String imgName) {

try {

URL url = new URL(imgName);

return ImageIO.read(url);

} catch (IOException e) {

System.out.println(e.getMessage());

}

return null;

}

/**

* 生成新图片到本地

*/

public void writeImageLocal(String newImage, BufferedImage img) {

if (newImage != null && img != null) {

try {

File outputfile = new File(newImage);

ImageIO.write(img, "jpg", outputfile);

} catch (IOException e) {

System.out.println(e.getMessage());

}

}

}

/**

* 设定文字的字体等

*/

public void setFont(Font font) {

this.font = font;

}

/**

* 修改图片,返回修改后的图片缓冲区(只输出一行文本)

*/

public BufferedImage modifyImage(BufferedImage img, Object content, int x, int y,Color color) {

try {

int w = img.getWidth();

int h = img.getHeight();

g = img.createGraphics();

g.setBackground(Color.BLUE);

//g.setColor(new Color(120, 120, 110));//设置字体颜色

g.setColor(color);//设置字体颜色

g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);

g.setStroke(new BasicStroke(3));

if (this.font != null)

g.setFont(this.font);

if (content != null) {

g.translate(w / 2, h / 2);

//g.rotate(8 * Math.PI / 180);

g.drawString(content.toString(), x, y);

}

g.dispose();

} catch (Exception e) {

System.out.println(e.getMessage());

}

return img;

}

/**

* 修改图片,返回修改后的图片缓冲区(只输出一行文本)

*

* 时间:2007-10-8

*

* @param img

* @return

*/

public BufferedImage modifyImageYe(BufferedImage img) {

try {

int w = img.getWidth();

int h = img.getHeight();

g = img.createGraphics();

g.setBackground(Color.WHITE);

g.setColor(Color.blue);//设置字体颜色

if (this.font != null)

g.setFont(this.font);

g.drawString("hi.baidu.com?xia_mingjian", w - 85, h - 5);

g.dispose();

} catch (Exception e) {

System.out.println(e.getMessage());

}

return img;

}

public BufferedImage modifyImagetogeter(BufferedImage b, BufferedImage d) {

try {

int w = b.getWidth();

int h = b.getHeight();

g = d.createGraphics();

g.drawImage(b, 100, 10, w, h, null);

g.dispose();

} catch (Exception e) {

System.out.println(e.getMessage());

}

return d;

}

/***

* 插入描边的字体

* @param img

* @param content

* @param w

* @param h

* @return

*/

public BufferedImage modifyShapImg(BufferedImage img, String content, int w, int h) {

// int w = img.getWidth();

// int h = img.getHeight();

g = img.createGraphics();

//Font f = new Font("Courier New", Font.BOLD, 140);

GlyphVector v = font.createGlyphVector(g.getFontMetrics(font).getFontRenderContext(), content);

Shape shape = v.getOutline();

if (content != null) {

g.translate(w, h);

//g.rotate(8 * Math.PI / 180);

//g.drawString(content.toString(), x, y);

}

g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);

g.setColor(new Color(0,90,160));

g.fill(shape);

g.setColor(new Color(248,248,255));

g.setStroke(new BasicStroke(2));

g.draw(shape);

return img;

}

}

插入多条的格式相同的文字:

package com.learning.utils;

import java.awt.Color;

import java.awt.Font;

import java.awt.image.BufferedImage;

public class PrintJobToImg {

public static void printJobToImg(PrintImage tt,BufferedImage d,String job1,String need1,String amount1,String salary1,int y) {

if(null != job1 && !job1.equals("")) {

need1 = "岗位职责:"+need1;

int strleth = need1.length()+5;

int num = strleth/40;

int subindex = 0;

int j = 40;

//y = -350;

String[] s1 = new String[num+1];

tt.setFont(new Font("黑体",Font.BOLD, 28));

tt.modifyImage(d, "职位:"+job1, -50, y, new Color(0,191,255));

tt.modifyImage(d, "人数:"+amount1, -30+(30*(3+job1.length())), y, new Color(210,105,30));

tt.modifyImage(d, "月薪:"+salary1, -10+(30*(6+job1.length()+amount1.length())), y, new Color(178,34,34));

y = y+25;

tt.setFont(new Font("黑体",Font.PLAIN, 24));

if(num < 1 ) {

System.out.println(num);

tt.modifyImage(d, need1, -50, y+25,new Color(0,0,0));

}else {

for(int i = 0;i

s1[i] = need1.substring(subindex, j);

tt.modifyImage(d, s1[i], -50, y,new Color(0,0,0));

subindex=j;

j+=40;

y+=25;

}

if(strleth%40 != 0) {

//System.out.println("不等于0");

s1[num] = need1.substring(num * 40);

tt.modifyImage(d, s1[num], -50, y,new Color(0,0,0));

}

}

//tt.modifyImage(d, "岗位要求:"+need1, -50, y+25, new Color(0,0,0));

}

}

}

启动类:

package com.learning.www;

import java.awt.Color;

import java.awt.Font;

import java.awt.GraphicsEnvironment;

import java.awt.image.BufferedImage;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cache.annotation.EnableCaching;

import com.learning.utils.PrintImage;

import com.learning.utils.PrintJobToImg;

@SpringBootApplication

@EnableAutoConfiguration

@EnableCaching

@MapperScan("com.learning.mapper")

public class LearningApplication {

public static void main(String[] args) {

SpringApplication.run(LearningApplication.class, args);

PrintImage tt = new PrintImage();

BufferedImage d = tt.loadImageLocal("D:\\test\\muban.jpg");

String title = "撒大大是多少有限公司";

int x = title.length() * 96;

// 公司标题 72号字体==96px

tt.setFont(new Font("造字工房力黑(非商用)常规体", Font.BOLD, 76));

//tt.modifyImage(d, title, (1920-x)/2-960, -420, new Color(65,105,225));

//tt.modifyShapImg(d, title, (1920-x)/2-960, -420);

tt.modifyShapImg(d, title, (1920-x)/2, 130);

//公司简介,限定字数

tt.setFont(new Font("黑体",Font.PLAIN, 30));

String str = "功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"

+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"

+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"

+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存";

System.out.println(str.length());

//计算字符串长度

int strleth=str.length();

//计算循环次数

int num = strleth/20;

//字符串截取第一位

int subindex = 0;

//字符串截取第二位

int j = 20;

//距离y轴的位置

int y = -350;

String[] s = new String[num+1];

if(num < 1 ) {

System.out.println(num);

tt.modifyImage(d, str, -830, y,new Color(0,0,0));

}else {

for(int i = 0;i

s[i] = str.substring(subindex, j);

tt.modifyImage(d, s[i], -830, y,new Color(0,0,0));

subindex=j;

j+=20;

y+=35;

}

if(strleth%20 != 0) {

//System.out.println("不等于0");

s[num] = str.substring(num * 20);

tt.modifyImage(d, s[num], -830, y,new Color(0,0,0));

}

}

// 公司岗位6个

String job1 = "普工";

String amount1 = "3人";

String salary1 = "4000元/月";

String need1 = "吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。"

+ "吃苦耐劳,具有专业的技术能力。";

y = -350;

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+110);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+220);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+330);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+440);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+550);

// tt.setFont(new Font("黑体",Font.PLAIN, 24));

// if(null != job1 && !job1.equals("")) {

// need1 = "岗位职责:"+need1;

// strleth = need1.length()+5;

// num = strleth/40;

// subindex = 0;

// j = 40;

// y = -350;

// String[] s1 = new String[num+1];

// tt.modifyImage(d, "职位:"+job1, -50, y, new Color(0,191,255));

// tt.modifyImage(d, "人数:"+amount1, -30+(30*(3+job1.length())), y, new Color(210,105,30));

// tt.modifyImage(d, "月薪:"+salary1, -10+(30*(6+job1.length()+amount1.length())), y, new Color(178,34,34));

// y = y+25;

// if(num < 1 ) {

// System.out.println(num);

// tt.modifyImage(d, need1, -50, y+25,new Color(0,0,0));

// }else {

// for(int i = 0;i

// s1[i] = need1.substring(subindex, j);

// tt.modifyImage(d, s1[i], -50, y,new Color(0,0,0));

// subindex=j;

// j+=40;

// y+=25;

// }

// if(strleth%40 != 0) {

// //System.out.println("不等于0");

// s1[num] = need1.substring(num * 40);

// tt.modifyImage(d, s1[num], -50, y,new Color(0,0,0));

// }

// }

// //tt.modifyImage(d, "岗位要求:"+need1, -50, y+25, new Color(0,0,0));

// }

// 联系方式和抵地址

String name = "张先生";

String tel = "12334343443";

String company = "盐都区高新区振兴路汇鑫大厦";

tt.setFont(new Font("黑体",Font.BOLD, 40));

tt.modifyImage(d, name, -650, 360,new Color(0,0,0));

tt.modifyImage(d, tel, -450, 360,new Color(0,0,0));

tt.modifyImage(d, company, -650, 440,new Color(0,0,0));

//tt.modifyImage(d, str, -830, -100);

tt.writeImageLocal("D:\\test\\cc.jpg", d);

System.out.println("success");

System.out.println(s[0]);

System.out.println(s[0].length());

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fontList = ge.getAvailableFontFamilyNames();

for(int i=0;i

{

System.out.println("字体:"+fontList[i]);

}

}

}

实现效果:模板图片为:1920 x 1080 px。

s1[i] = need1.substring(subindex, j);

tt.modifyImage(d, s1[i], -50, y,new Color(0,0,0));

subindex=j;

j+=40;

y+=25;

}

if(strleth%40 != 0) {

//System.out.println("不等于0");

s1[num] = need1.substring(num * 40);

tt.modifyImage(d, s1[num], -50, y,new Color(0,0,0));

}

}

//tt.modifyImage(d, "岗位要求:"+need1, -50, y+25, new Color(0,0,0));

}

}

}

启动类:

package com.learning.www;

import java.awt.Color;

import java.awt.Font;

import java.awt.GraphicsEnvironment;

import java.awt.image.BufferedImage;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cache.annotation.EnableCaching;

import com.learning.utils.PrintImage;

import com.learning.utils.PrintJobToImg;

@SpringBootApplication

@EnableAutoConfiguration

@EnableCaching

@MapperScan("com.learning.mapper")

public class LearningApplication {

public static void main(String[] args) {

SpringApplication.run(LearningApplication.class, args);

PrintImage tt = new PrintImage();

BufferedImage d = tt.loadImageLocal("D:\\test\\muban.jpg");

String title = "撒大大是多少有限公司";

int x = title.length() * 96;

// 公司标题 72号字体==96px

tt.setFont(new Font("造字工房力黑(非商用)常规体", Font.BOLD, 76));

//tt.modifyImage(d, title, (1920-x)/2-960, -420, new Color(65,105,225));

//tt.modifyShapImg(d, title, (1920-x)/2-960, -420);

tt.modifyShapImg(d, title, (1920-x)/2, 130);

//公司简介,限定字数

tt.setFont(new Font("黑体",Font.PLAIN, 30));

String str = "功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"

+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"

+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"

+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存"+"功能:可以实现在图片模板上写内容并保存";

System.out.println(str.length());

//计算字符串长度

int strleth=str.length();

//计算循环次数

int num = strleth/20;

//字符串截取第一位

int subindex = 0;

//字符串截取第二位

int j = 20;

//距离y轴的位置

int y = -350;

String[] s = new String[num+1];

if(num < 1 ) {

System.out.println(num);

tt.modifyImage(d, str, -830, y,new Color(0,0,0));

}else {

for(int i = 0;i

s[i] = str.substring(subindex, j);

tt.modifyImage(d, s[i], -830, y,new Color(0,0,0));

subindex=j;

j+=20;

y+=35;

}

if(strleth%20 != 0) {

//System.out.println("不等于0");

s[num] = str.substring(num * 20);

tt.modifyImage(d, s[num], -830, y,new Color(0,0,0));

}

}

// 公司岗位6个

String job1 = "普工";

String amount1 = "3人";

String salary1 = "4000元/月";

String need1 = "吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。"

+ "吃苦耐劳,具有专业的技术能力。";

y = -350;

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+110);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+220);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+330);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+440);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+550);

// tt.setFont(new Font("黑体",Font.PLAIN, 24));

// if(null != job1 && !job1.equals("")) {

// need1 = "岗位职责:"+need1;

// strleth = need1.length()+5;

// num = strleth/40;

// subindex = 0;

// j = 40;

// y = -350;

// String[] s1 = new String[num+1];

// tt.modifyImage(d, "职位:"+job1, -50, y, new Color(0,191,255));

// tt.modifyImage(d, "人数:"+amount1, -30+(30*(3+job1.length())), y, new Color(210,105,30));

// tt.modifyImage(d, "月薪:"+salary1, -10+(30*(6+job1.length()+amount1.length())), y, new Color(178,34,34));

// y = y+25;

// if(num < 1 ) {

// System.out.println(num);

// tt.modifyImage(d, need1, -50, y+25,new Color(0,0,0));

// }else {

// for(int i = 0;i

// s1[i] = need1.substring(subindex, j);

// tt.modifyImage(d, s1[i], -50, y,new Color(0,0,0));

// subindex=j;

// j+=40;

// y+=25;

// }

// if(strleth%40 != 0) {

// //System.out.println("不等于0");

// s1[num] = need1.substring(num * 40);

// tt.modifyImage(d, s1[num], -50, y,new Color(0,0,0));

// }

// }

// //tt.modifyImage(d, "岗位要求:"+need1, -50, y+25, new Color(0,0,0));

// }

// 联系方式和抵地址

String name = "张先生";

String tel = "12334343443";

String company = "盐都区高新区振兴路汇鑫大厦";

tt.setFont(new Font("黑体",Font.BOLD, 40));

tt.modifyImage(d, name, -650, 360,new Color(0,0,0));

tt.modifyImage(d, tel, -450, 360,new Color(0,0,0));

tt.modifyImage(d, company, -650, 440,new Color(0,0,0));

//tt.modifyImage(d, str, -830, -100);

tt.writeImageLocal("D:\\test\\cc.jpg", d);

System.out.println("success");

System.out.println(s[0]);

System.out.println(s[0].length());

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fontList = ge.getAvailableFontFamilyNames();

for(int i=0;i

{

System.out.println("字体:"+fontList[i]);

}

}

}

实现效果:模板图片为:1920 x 1080 px。

s[i] = str.substring(subindex, j);

tt.modifyImage(d, s[i], -830, y,new Color(0,0,0));

subindex=j;

j+=20;

y+=35;

}

if(strleth%20 != 0) {

//System.out.println("不等于0");

s[num] = str.substring(num * 20);

tt.modifyImage(d, s[num], -830, y,new Color(0,0,0));

}

}

// 公司岗位6个

String job1 = "普工";

String amount1 = "3人";

String salary1 = "4000元/月";

String need1 = "吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。吃苦耐劳,具有专业的技术能力。"

+ "吃苦耐劳,具有专业的技术能力。";

y = -350;

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+110);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+220);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+330);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+440);

PrintJobToImg.printJobToImg(tt, d, job1, need1, amount1, salary1, y+550);

// tt.setFont(new Font("黑体",Font.PLAIN, 24));

// if(null != job1 && !job1.equals("")) {

// need1 = "岗位职责:"+need1;

// strleth = need1.length()+5;

// num = strleth/40;

// subindex = 0;

// j = 40;

// y = -350;

// String[] s1 = new String[num+1];

// tt.modifyImage(d, "职位:"+job1, -50, y, new Color(0,191,255));

// tt.modifyImage(d, "人数:"+amount1, -30+(30*(3+job1.length())), y, new Color(210,105,30));

// tt.modifyImage(d, "月薪:"+salary1, -10+(30*(6+job1.length()+amount1.length())), y, new Color(178,34,34));

// y = y+25;

// if(num < 1 ) {

// System.out.println(num);

// tt.modifyImage(d, need1, -50, y+25,new Color(0,0,0));

// }else {

// for(int i = 0;i

// s1[i] = need1.substring(subindex, j);

// tt.modifyImage(d, s1[i], -50, y,new Color(0,0,0));

// subindex=j;

// j+=40;

// y+=25;

// }

// if(strleth%40 != 0) {

// //System.out.println("不等于0");

// s1[num] = need1.substring(num * 40);

// tt.modifyImage(d, s1[num], -50, y,new Color(0,0,0));

// }

// }

// //tt.modifyImage(d, "岗位要求:"+need1, -50, y+25, new Color(0,0,0));

// }

// 联系方式和抵地址

String name = "张先生";

String tel = "12334343443";

String company = "盐都区高新区振兴路汇鑫大厦";

tt.setFont(new Font("黑体",Font.BOLD, 40));

tt.modifyImage(d, name, -650, 360,new Color(0,0,0));

tt.modifyImage(d, tel, -450, 360,new Color(0,0,0));

tt.modifyImage(d, company, -650, 440,new Color(0,0,0));

//tt.modifyImage(d, str, -830, -100);

tt.writeImageLocal("D:\\test\\cc.jpg", d);

System.out.println("success");

System.out.println(s[0]);

System.out.println(s[0].length());

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fontList = ge.getAvailableFontFamilyNames();

for(int i=0;i

{

System.out.println("字体:"+fontList[i]);

}

}

}

实现效果:模板图片为:1920 x 1080 px。

// s1[i] = need1.substring(subindex, j);

// tt.modifyImage(d, s1[i], -50, y,new Color(0,0,0));

// subindex=j;

// j+=40;

// y+=25;

// }

// if(strleth%40 != 0) {

// //System.out.println("不等于0");

// s1[num] = need1.substring(num * 40);

// tt.modifyImage(d, s1[num], -50, y,new Color(0,0,0));

// }

// }

// //tt.modifyImage(d, "岗位要求:"+need1, -50, y+25, new Color(0,0,0));

// }

// 联系方式和抵地址

String name = "张先生";

String tel = "12334343443";

String company = "盐都区高新区振兴路汇鑫大厦";

tt.setFont(new Font("黑体",Font.BOLD, 40));

tt.modifyImage(d, name, -650, 360,new Color(0,0,0));

tt.modifyImage(d, tel, -450, 360,new Color(0,0,0));

tt.modifyImage(d, company, -650, 440,new Color(0,0,0));

//tt.modifyImage(d, str, -830, -100);

tt.writeImageLocal("D:\\test\\cc.jpg", d);

System.out.println("success");

System.out.println(s[0]);

System.out.println(s[0].length());

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fontList = ge.getAvailableFontFamilyNames();

for(int i=0;i

{

System.out.println("字体:"+fontList[i]);

}

}

}

实现效果:模板图片为:1920 x 1080 px。

{

System.out.println("字体:"+fontList[i]);

}

}

}

实现效果:模板图片为:1920 x 1080 px。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口自动化框架包含哪些(接口自动化框架包含哪些内容)
下一篇:做接口测试之前需要学什么(做接口测试前需要准备什么)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~