Class Images

java.lang.Object
org.aoju.bus.core.image.Images
All Implemented Interfaces:
Serializable

public class Images extends Object implements Serializable
图像编辑器
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • Images

      public Images(BufferedImage srcImage)
      构造
      Parameters:
      srcImage - 来源图片
    • Images

      public Images(String imageUrl, String fileType)
      构造
      Parameters:
      imageUrl - 背景图片地址(画布以背景图宽高为基准)
      fileType - 输出图片格式
    • Images

      public Images(int canvasWidth, int canvasHeight, String fileType)
      Parameters:
      canvasWidth - 画布宽
      canvasHeight - 画布高
      fileType - 输出图片格式
    • Images

      public Images(int canvasWidth, int canvasHeight, Color bgColor, String fileType)
      Parameters:
      canvasWidth - 画布宽
      canvasHeight - 画布高
      bgColor - 画布颜色(如果需要透明背景,不要设这个参数,比方图片边缘是圆角的场景)
      fileType - 输出图片格式
    • Images

      public Images(BufferedImage srcImage, String fileType)
      构造
      Parameters:
      srcImage - 来源图片
      fileType - 目标图片类型,null则读取来源图片类型
    • Images

      public Images(BufferedImage srcImage, String imageUrl, String fileType)
      构造:图片合成专用
      Parameters:
      srcImage - 背景图片对象(画布以背景图宽高为基准)
      imageUrl - 背景图片地址(画布以背景图宽高为基准)
      fileType - 输出图片格式
    • Images

      public Images(String bgImageUrl, int width, int height, Scale.Mode zoomMode, String fileType) throws Exception
      Parameters:
      bgImageUrl - 背景图片地址
      width - 背景图宽度
      height - 背景图高度
      zoomMode - 缩放模式
      fileType - 输出图片格式
      Throws:
      Exception - 异常信息
    • Images

      public Images(BufferedImage bgImage, int width, int height, Scale.Mode zoomMode, String fileType) throws Exception
      Parameters:
      bgImage - 背景图片对象
      width - 背景图宽度
      height - 背景图高度
      zoomMode - 缩放模式
      fileType - 输出图片格式
      Throws:
      Exception - 异常信息
  • Method Details

    • from

      public static Images from(Path imagePath)
      从Path读取图片并开始处理
      Parameters:
      imagePath - 图片文件路径
      Returns:
      Images
    • from

      public static Images from(File imageFile)
      从文件读取图片并开始处理
      Parameters:
      imageFile - 图片文件
      Returns:
      Images
    • from

      public static Images from(Resource resource)
      从资源对象中读取图片并开始处理
      Parameters:
      resource - 图片资源对象
      Returns:
      Images
    • from

      public static Images from(InputStream in)
      从流读取图片并开始处理
      Parameters:
      in - 图片流
      Returns:
      Images
    • from

      public static Images from(ImageInputStream imageStream)
      从ImageInputStream取图片并开始处理
      Parameters:
      imageStream - 图片流
      Returns:
      Images
    • from

      public static Images from(URL imageUrl)
      从URL取图片并开始处理
      Parameters:
      imageUrl - 图片URL
      Returns:
      Images
    • from

      public static Images from(Image image)
      从Image取图片并开始处理
      Parameters:
      image - 图片
      Returns:
      Images
    • from

      public static Images from(BufferedImage srcImage, String imageUrl, String fileType)
      图片合成专用-读取图片
      Parameters:
      srcImage - 背景图片对象(画布以背景图宽高为基准)
      imageUrl - 背景图片地址(画布以背景图宽高为基准)
      fileType - 输出图片格式
      Returns:
      Images
    • makeRoundCorner

      public static BufferedImage makeRoundCorner(BufferedImage srcImage, int width, int height, int radius)
      圆角
      Parameters:
      srcImage - 图片流
      width - 宽度
      height - 高度
      radius - 半径
      Returns:
      图片流
    • makeBlur

      public static BufferedImage makeBlur(BufferedImage srcImage, int radius)
      高斯模糊(毛玻璃效果)
      Parameters:
      srcImage - 图片流
      radius - 半径
      Returns:
      图片流
    • setTargetImageType

      public Images setTargetImageType(String imgType)
      设置目标图片文件格式,用于写出
      Parameters:
      imgType - 图片格式
      Returns:
      this
      See Also:
    • setPositionBaseCentre

      public Images setPositionBaseCentre(boolean positionBaseCentre)
      计算x,y坐标的时候是否从中心做为原始坐标开始计算
      Parameters:
      positionBaseCentre - 是否从中心做为原始坐标开始计算
      Returns:
      the image
    • setQuality

      public Images setQuality(double quality)
      设置图片输出质量,数字为0~1(不包括0和1)表示质量压缩比,除此数字外设置表示不压缩
      Parameters:
      quality - 质量,数字为0~1(不包括0和1)表示质量压缩比,除此数字外设置表示不压缩
      Returns:
      the image
    • setQuality

      public Images setQuality(float quality)
      设置图片输出质量,数字为0~1(不包括0和1)表示质量压缩比,除此数字外设置表示不压缩
      Parameters:
      quality - 质量,数字为0~1(不包括0和1)表示质量压缩比,除此数字外设置表示不压缩
      Returns:
      image
    • scale

      public Images scale(float scale)
      缩放图像(按比例缩放)
      Parameters:
      scale - 缩放比例 比例大于1时为放大,小于1大于0为缩小
      Returns:
      this
    • scale

      public Images scale(int width, int height)
      缩放图像(按长宽缩放) 注意:目标长宽与原图不成比例会变形
      Parameters:
      width - 目标宽度
      height - 目标高度
      Returns:
      this
    • scale

      public Images scale(int width, int height, int scaleType)
      缩放图像(按长宽缩放) 注意:目标长宽与原图不成比例会变形
      Parameters:
      width - 目标宽度
      height - 目标高度
      scaleType - 缩放类型,可选Image.SCALE_SMOOTH平滑模式或Image.SCALE_DEFAULT默认模式
      Returns:
      this
    • scale

      public Images scale(int width, int height, Color fixedColor)
      等比缩放图像,此方法按照按照给定的长宽等比缩放图片,按照长宽缩放比最多的一边等比缩放,空白部分填充背景色 缩放后默认为jpeg格式
      Parameters:
      width - 缩放后的宽度
      height - 缩放后的高度
      fixedColor - 比例不对时补充的颜色,不补充为null
      Returns:
      this
    • cut

      public Images cut(Rectangle rectangle)
      图像切割(按指定起点坐标和宽高切割)
      Parameters:
      rectangle - 矩形对象,表示矩形区域的x,y,width,height
      Returns:
      this
    • cut

      public Images cut(int x, int y)
      图像切割为圆形(按指定起点坐标和半径切割),填充满整个图片(直径取长宽最小值)
      Parameters:
      x - 原图的x坐标起始位置
      y - 原图的y坐标起始位置
      Returns:
      this
    • cut

      public Images cut(int x, int y, int radius)
      图像切割为圆形(按指定起点坐标和半径切割)
      Parameters:
      x - 原图的x坐标起始位置
      y - 原图的y坐标起始位置
      radius - 半径,小于0表示填充满整个图片(直径取长宽最小值)
      Returns:
      this
    • round

      public Images round(double arc)
      图片圆角处理
      Parameters:
      arc - 圆角弧度,0~1,为长宽占比
      Returns:
      this
    • gray

      public Images gray()
      彩色转为灰度
      Returns:
      this
    • binary

      public Images binary()
      彩色转为黑白二值化图片
      Returns:
      this
    • pressText

      public Images pressText(String pressText, Color color, Font font, int x, int y, float alpha)
      给图片添加文字水印 此方法只在给定位置写出一个水印字符串
      Parameters:
      pressText - 水印文字
      color - 水印的字体颜色
      font - Font 字体相关信息
      x - 修正值。 默认在中间,偏移量相对于中间偏移
      y - 修正值。 默认在中间,偏移量相对于中间偏移
      alpha - 透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
      Returns:
      处理后的图像
    • pressText

      public Images pressText(String pressText, Color color, Font font, Point point, float alpha)
      给图片添加文字水印 此方法只在给定位置写出一个水印字符串
      Parameters:
      pressText - 水印文字
      color - 水印的字体颜色
      font - Font 字体相关信息
      point - 绘制字符串的位置坐标
      alpha - 透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
      Returns:
      处理后的图像
    • pressTextFull

      public Images pressTextFull(String pressText, Color color, Font font, int lineHeight, int degree, float alpha)
      给图片添加全屏文字水印
      Parameters:
      pressText - 水印文字,文件间的间隔使用尾部添加空格方式实现
      color - 水印的字体颜色
      font - Font 字体相关信息
      lineHeight - 行高
      degree - 旋转角度,(单位:弧度),以圆点(0,0)为圆心,正代表顺时针,负代表逆时针
      alpha - 透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
      Returns:
      处理后的图像
    • pressImage

      public Images pressImage(Image pressImage, int x, int y, float alpha)
      给图片添加图片水印
      Parameters:
      pressImage - 水印图片,可以使用ImageIO.read(File)方法读取文件
      x - 修正值 默认在中间,偏移量相对于中间偏移
      y - 修正值 默认在中间,偏移量相对于中间偏移
      alpha - 透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
      Returns:
      this
    • pressImage

      public Images pressImage(Image pressImage, Rectangle rectangle, float alpha)
      给图片添加图片水印
      Parameters:
      pressImage - 水印图片,可以使用ImageIO.read(File)方法读取文件
      rectangle - 矩形对象,表示矩形区域的x,y,width,height,x,y从背景图片中心计算
      alpha - 透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
      Returns:
      this
    • rotate

      public Images rotate(int degree)
      旋转图片为指定角度 来自:http://blog.51cto.com/cping1982/130066
      Parameters:
      degree - 旋转角度
      Returns:
      旋转后的图片
    • flip

      public Images flip()
      水平翻转图像
      Returns:
      this
    • getImg

      public Image getImg()
      获取处理过的图片
      Returns:
      处理过的图片
    • write

      public boolean write(OutputStream out) throws InstrumentException
      写出图像为结果设置格式 结果类型设定见setTargetImageType(String)
      Parameters:
      out - 写出到的目标流
      Returns:
      是否成功写出, 如果返回false表示未找到合适的Writer
      Throws:
      InstrumentException - IO异常
    • write

      public boolean write(ImageOutputStream targetImageStream) throws InstrumentException
      写出图像为结果设置格式 结果类型设定见setTargetImageType(String)
      Parameters:
      targetImageStream - 写出到的目标流
      Returns:
      是否成功写出, 如果返回false表示未找到合适的Writer
      Throws:
      InstrumentException - IO异常
    • write

      public boolean write(File targetFile) throws InstrumentException
      写出图像为目标文件扩展名对应的格式
      Parameters:
      targetFile - 目标文件
      Returns:
      是否成功写出, 如果返回false表示未找到合适的Writer
      Throws:
      InstrumentException - IO异常
    • stroke

      public Images stroke(Color color, float width)
      描边,此方法为向内描边,会覆盖图片相应的位置
      Parameters:
      color - 描边颜色,默认黑色
      width - 边框粗细
      Returns:
      this
    • stroke

      public Images stroke(Color color, Stroke stroke)
      描边,此方法为向内描边,会覆盖图片相应的位置
      Parameters:
      color - 描边颜色,默认黑色
      stroke - 描边属性,包括粗细、线条类型等,见BasicStroke
      Returns:
      this
    • merge

      public BufferedImage merge() throws Exception
      合成图片,返回图片对象
      Returns:
      BufferedImage
      Throws:
      Exception - 异常
    • out

      public void out(String filePath) throws Exception
      保存合成后的图片
      Parameters:
      filePath - 完整保存路径,如 “E://123.jpg”
      Throws:
      IOException - 异常
      Exception
    • getBufferedImage

      public BufferedImage getBufferedImage()
      获取合成后的图片对象
      Returns:
      BufferedImage
    • getInputStream

      public InputStream getInputStream() throws Exception
      获取合成后的图片流
      Returns:
      InputStream
      Throws:
      Exception - 异常
    • getLineHeight

      public int getLineHeight(TextElement textElement)
      计算多行文本高度
      Parameters:
      textElement - 文本元素
      Returns:
      高度数值
    • getFrontWidth

      public int getFrontWidth(TextElement textElement)
      计算文本宽度
      Parameters:
      textElement - 文本元素
      Returns:
      高度数值
    • addElement

      public void addElement(AbstractElement element)
      添加元素(图片或文本)
      Parameters:
      element - 图片或文本元素
    • addImageElement

      public ImageElement addImageElement(String imgUrl, int x, int y)
      添加图片元素
      Parameters:
      imgUrl - 图片url
      x - x坐标
      y - y坐标
      Returns:
      ImageElement
    • addImageElement

      public ImageElement addImageElement(BufferedImage image, int x, int y)
      添加图片元素
      Parameters:
      image - 图片对象
      x - x坐标
      y - y坐标
      Returns:
      ImageElement
    • addImageElement

      public ImageElement addImageElement(String imgUrl, int x, int y, int width, int height, Scale.Mode mode)
      添加图片元素
      Parameters:
      imgUrl - 图片rul
      x - x坐标
      y - y坐标
      width - 宽度
      height - 高度
      mode - 缩放模式
      Returns:
      ImageElement
    • addImageElement

      public ImageElement addImageElement(BufferedImage image, int x, int y, int width, int height, Scale.Mode mode)
      添加图片元素
      Parameters:
      image - 图片对象
      x - x坐标
      y - y坐标
      width - 宽度
      height - 高度
      mode - 缩放模式
      Returns:
      ImageElement
    • addTextElement

      public TextElement addTextElement(String text, Font font, int x, int y)
      添加文本元素
      Parameters:
      text - 文本
      font - Font对象
      x - x坐标
      y - y坐标
      Returns:
      TextElement
    • addTextElement

      public TextElement addTextElement(String text, int fontSize, int x, int y)
      添加文本元素
      Parameters:
      text - 文本
      fontSize - 字体大小
      x - x坐标
      y - y坐标
      Returns:
      TextElement
    • addTextElement

      public TextElement addTextElement(String text, String fontName, int fontSize, int x, int y)
      添加文本元素
      Parameters:
      text - 文本
      fontName - 字体名称
      fontSize - 字体大小
      x - x坐标
      y - y坐标
      Returns:
      TextElement
    • addRectangleElement

      public RectangleElement addRectangleElement(int x, int y, int width, int height)
      添加矩形元素
      Parameters:
      x - x坐标
      y - y坐标
      width - 宽度
      height - 高度
      Returns:
      the object
    • setBackgroundBlur

      public void setBackgroundBlur(int blur)
      设置背景高斯模糊
      Parameters:
      blur - 模糊值
    • setCanvasRoundCorner

      public void setCanvasRoundCorner(Integer roundCorner)
      设置画布圆角(针对整图)
      Parameters:
      roundCorner - 模糊值