java 图片合成

Java实现合成图片 前言:应公司需求,需要将二维码和公司的logo进行合成。 实现步骤: 1、生成二维码。 2、切好logo图。 3、图片进行合成。 直接贴代码: /** * 生成二维码 * @param backLink 扫码回调链接 * @param savePath 二维码保存路径 * @return 返回保存路径(用于保存数据库) ... 阅读详情
  1. 纵向拼接多张图片
  2. 横向拼接多张图片
  3. 用字节数组合成多张图片 ps:(要用Base64 encoder decoder)
  /**
     * Java纵向拼接多张图片
     *
     * @param imgs
     * @param type
     * @param dst_pic
     * @return
     */
    public static boolean yMerge(String[] imgs, String type, String dst_pic) {
        //获取需要拼接的图片长度
        int len = imgs.length;
        //判断长度是否大于0
        if (len < 1) {
            return false;
        }
        File[] src = new File[len];
        BufferedImage[] images = new BufferedImage[len];
        int[][] ImageArrays = new int[len][];
        for (int i = 0; i < len; i++) {
            try {
                src[i] = new File(imgs[i]);
                images[i] = ImageIO.read(src[i]);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
            int width = images[i].getWidth();
            int height = images[i].getHeight();
            // 从图片中读取RGB 像素
            ImageArrays[i] = new int[width * height];
            ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);
        }

        int dst_height = 0;
        int dst_width = images[0].getWidth();
        //合成图片像素
        for (int i = 0; i < images.length; i++) {
            dst_width = dst_width > images[i].getWidth() ? dst_width : images[i].getWidth();
            dst_height += images[i].getHeight();
        }
        //合成后的图片
        if (dst_height < 1) {
            return false;
        }
        // 生成新图片
        try {
            // dst_width = images[0].getWidth();
            BufferedImage ImageNew = new BufferedImage(dst_width, dst_height,
                    BufferedImage.TYPE_INT_RGB);
            int height_i = 0;
            for (int i = 0; i < images.length; i++) {
                ImageNew.setRGB(0, height_i, dst_width, images[i].getHeight(),
                        ImageArrays[i], 0, dst_width);
                height_i += images[i].getHeight();
            }

            File outFile = new File(dst_pic);
            ImageIO.write(ImageNew, type, outFile);// 写图片 ,输出到硬盘
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * Java横向拼接多张图片
     *
     * @param imgs
     * @param type
     * @param dst_pic
     * @return
     */
    public static boolean xMerge(String[] imgs, String type, String dst_pic) {
        //获取需要拼接的图片长度
        int len = imgs.length;
        //判断长度是否大于0
        if (len < 1) {
            return false;
        }
        File[] src = new File[len];
        BufferedImage[] images = new BufferedImage[len];
        int[][] ImageArrays = new int[len][];
        for (int i = 0; i < len; i++) {
            try {
                src[i] = new File(imgs[i]);
                images[i] = ImageIO.read(src[i]);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
            int width = images[i].getWidth();
            int height = images[i].getHeight();
            // 从图片中读取RGB 像素
            ImageArrays[i] = new int[width * height];
            ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);
        }

        int dst_height = images[0].getHeight();
        int dst_width = 0;
        int max_dst_width = 0;
        //合成图片像素
        for (int i = 0; i < images.length; i++) {
            dst_height = dst_height > images[i].getHeight() ? dst_height : images[i].getHeight();
            max_dst_width = max_dst_width > images[i].getWidth() ? max_dst_width : images[i].getWidth();
            dst_width += images[i].getWidth();
        }
        //合成后的图片
        if (dst_width < 1) {
            return false;
        }
        // 生成新图片
        try {
            // dst_width = images[0].getWidth();
            BufferedImage ImageNew = new BufferedImage(dst_width, dst_height, BufferedImage.TYPE_INT_RGB);
            int width_i = 0;
            for (int i = 0; i < images.length; i++) {
                ImageNew.setRGB(width_i, 0, images[i].getWidth(), dst_height, ImageArrays[i], 0, max_dst_width);
                width_i += images[i].getWidth();
            }

            File outFile = new File(dst_pic);


            ImageIO.write(ImageNew, type, outFile);// 写图片 ,输出到硬盘
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }


    public static byte[] xMergeByte(List<byte[]> imageBytesList, String type) {
        //获取需要拼接的图片长度
        int len = imageBytesList.size();
        //判断长度是否大于0
        if (len < 1) {
            throw new RuntimeException("input is null of xMergeByte");
        }
        BufferedImage[] images = new BufferedImage[len];
        int[][] ImageArrays = new int[len][];
        for (int i = 0; i < len; i++) {
            try {
                byte[] bytes = imageBytesList.get(i);
                ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytesList.get(i),0,bytes.length);

                BufferedImage read = ImageIO.read(inputStream);
                images[i] = read;
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println(images[i]);
            int width = images[i].getWidth();
            int height = images[i].getHeight();
            // 从图片中读取RGB 像素
            ImageArrays[i] = new int[width * height];
            ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width);
        }

        int dst_height = images[0].getHeight();
        int dst_width = 0;
        int max_dst_width = 0;
        //合成图片像素
        for (int i = 0; i < images.length; i++) {
            dst_height = dst_height > images[i].getHeight() ? dst_height : images[i].getHeight();
            max_dst_width = max_dst_width > images[i].getWidth() ? max_dst_width : images[i].getWidth();
            dst_width += images[i].getWidth();
        }
        //合成后的图片
        if (dst_width < 1) {
            throw new RuntimeException("merged result is null of xMergeByte");
        }
        // 生成新图片
        try {
            // dst_width = images[0].getWidth();
            BufferedImage ImageNew = new BufferedImage(dst_width, dst_height, BufferedImage.TYPE_INT_RGB);
            int width_i = 0;
            for (int i = 0; i < images.length; i++) {
                ImageNew.setRGB(width_i, 0, images[i].getWidth(), dst_height, ImageArrays[i], 0, max_dst_width);
                width_i += images[i].getWidth();
            }
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            boolean isSuccess = ImageIO.write(ImageNew, type, outputStream);
            if (!isSuccess) {
                throw new RuntimeException("merged result generation fail of xMergeByte!");
            }
            byte[] mergedBytes = outputStream.toByteArray();
            return mergedBytes;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
JAVA 由图片合成gif文件 在android或java的开发环境下,由图片合成gif文件。 阅读详情

相关推荐

Java图片合成实战教程

本文还有配套的精品资源,点击获取 简介:在Java中,将两张图片合成为一张是一项基础的图像处理任务。通过使用 和 库,实现图片的读取、处理和合并。文章首先介绍了 在读取图片文件中的应用,然后使用 方法将文件转换为 对象,并通过 类完成图片的合并。最后,通过 将合并后的图片保存为新的文件。这个过程涵盖了图像尺寸、合成位置和透明度等细节的处理,并可扩展至多图片处理和更复杂的图像处理任务。教程中可能还包含了示例代码或完整的合成程序。 在现代的数字媒体领

weixin_28713083的博客 1020

java实现图片拼接

两张图片的拼接。 如果横向拼接,宽度要相同;纵向拼接,长度要相同。 public static void main(String[] args) throws IOException { String filePath = "E:\\picture\\"; String path1 = filePath + "a.jpg"; String path2 = filePath + "b.jpg"; mergeImage(path1, pat

weixin_40052298的博客 5125

java代码实现拼接图片

选择图片,拼接图片,Java拼接多张图片,连接在一起 代码程序。

Java图片拼接

Java实现图片拼接

Silver_Fan的博客 775

java多张图片合成,图片拼接,图片上写字

图片工具类(多张图片合成,图片拼接,图片上写字),java语言实现

【电力电子控制】基于强化学习的单相逆变器并网电流控制

本文将尝试以 DQN(Deep Q-Network)为例,设计并训练一个面向单相逆变器的智能控制器,实现对并网电流的精准调节。

weixin_62596197的博客 463

java拼接图片

【代码】java拼接图片。

weixin_42188435的博客 500

腾讯会议视频过期了怎么办?亲测可用:用这个免费插件抢救你的会议录制与回放

本文提供了三种亲测有效的腾讯会议视频过期恢复方案,包括浏览器缓存提取、专业工具组合及预防性措施。特别推荐使用免费插件抢救过期会议录制与回放,帮助职场人解决重要视频资料丢失的难题。

weixin_33686714的博客 263

java合成图片

场景 前端有一个神器——canvas,这个画布标签可以处理各种图片的合成,可以精确到图片的具体坐标,加水印,去水印,简直不要太简单!那java后端可以处理吗?请大声的告诉他,能,必须能!今天小编告诉你一个神器——image-combiner,合成图片so easy! 环境 jdk1.8 spring boot 搭建 引入pom文件 <dependency> <groupId>com.freewayso</groupId> <artifa

Meiko记录 1085

保姆级教程:在华为MateBook E Go上安装安卓子系统(含Hyper-V配置和地区切换避坑指南)

本文提供在华为MateBook E Go(ARM架构)上安装Windows 11安卓子系统(WSA)的详细指南。重点阐述了ARM平台无需指令转译的流畅原生体验优势,并逐步讲解启用Hyper-V虚拟化、切换系统区域以安装Amazon Appstore、配置开发人员模式及使用ADB安装第三方应用(如华为应用市场)的全过程,助您解锁高效的原生安卓应用生态。

kafka6courier的博客 525

第五章 PCIe介绍 5.1-5.7

为什么SSD要用PCIe接口?因为它快,比SATA快。通道,PCIe最多可以有32个通道。两个设备之间的PCIe连接,叫做一个Link。如下图,设备A和设备B是个双向连接,两个PCIe设备之间,有专门的发送和接收通道,数据可以同时往两个方向传输,PCIe Spec称这种工作模式为,可以理解为。和PCIe一样,SATA有独立的发送和接收通道。但与PCIe工作模式不一样,同一时间,SATA只有一条通道可以进行数据传输。这种工作模式称为。与SATA单通道不同,PCIe连接可以通过增加通道数扩展带宽。

fengbaobaola的博客 2967

java多张图片合成

在此处借用广东省教育学院的公众号图标,我的四张jpg都是长一样的,因为没什么图片了,所以就合成一张大的就长成这样子,image.drawImage这个方法是合成图片时,新的图片开始的类似x轴和y轴的开始的坐标,拥有抽象思维的大家好好捋一下 package com.yunduan.test; import java.awt.Graphics; import java.awt.image.Buffe...

weixin_42391319的博客 829

从0开始部署基础的AlwaysOn

在这个快餐文化盛行的时代,应该没多少人真的会沉下心来看理论和具体步骤,加上我自己也需要一篇可以扩展的快速搭建环境的指引,所以特别写了这篇文章。 我们在这里要做的事情有以下几个:安装环境。包括虚拟机和网络配置等。安装Windows域、配置必要的账号密码及功能。搭建域环境并进行配置。安装配置Windows Server Failover Cluster(WSFC)。安装SQL Server。配置Alw

MVP黄钊吉(發糞塗牆) 7566

java图片合成

import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; import org.springframework.util.Assert; pu...

奋斗中的老青年 1642

分布式锁特点、以及用python3实现redis分布式锁

以下是 Python3 实现 Redis 分布式锁的详细教程,包含代码示例、原理说明及最佳实践。

数据知道的博客 2万+

实战案例—encrypt靶场(AES固定key篇)

AES是一种对称密钥加密方法,意味着加密和解密时使用相同的密钥。AES加密存在三种形式:AES-128、AES-192和AES-256,它们分别对应于三种不同的密钥长度——128位(即16字节)、192位(即24字节)和256位(即32字节)。通常情况下,密钥的长度越长,提供的安全性就越高,但相应地,加解密过程所需的时间也会增加。默认情况下,采用的是AES-128,其提供的安全性对于大多数应用来说已经足够充分。

zhouzhou_98的博客 497

java 图片合成_Java 实现图片合成

图片合成利用Java的绘图方法,实现图片合成在开始之前,先定一个小目标,我们希望通过图片合成的方式,创建一个类似下面样式的图片I. 设计思路首先解析一下我们的目标实现图片合成,那么这些合成的基本组成单元有些什么?组成基本单元图片文字几何图形也就是说,我们可以将任意个图片,文字,几何图形,按照自己的意愿进行拼接,那么问题就转变成两个基本单元如何在画布上渲染基本单元之间如何配合使用II. 基本单元绘制...

weixin_39647499的博客 431

【四足机器人项目实战】四足机器人嵌入式硬件设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、电源管理板设计及制作二、通讯中继板设计及制作三、力控无刷电机驱动板设计及制作1.磁场定向控制FOC控制原理2.电机转子位置、速度检测原理3.硬件CAN通讯原理 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–嵌入式硬件设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、电

qq_35635374的博客 1万+

Java 图片合成

本功能通过加载本地的背景图片和传入的参数进行图片的合成。主要包含了背景图、二维码插图和文本内容。

Supreme_Sir的博客 1015

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

基于Java的自助多张图片合成拼接实战

本文将围绕“基于Java的自助多张图片合成拼接实战”这一主题,展开详细的探讨和实践。在本次实战中,我们将详细介绍如何使用Java实现多张图片的合成拼接

夜郎King的博客 9287

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java中怎么合成图片_Java 实现图片合成

图片合成利用Java的绘图方法,实现图片合成在开始之前,先定一个小目标,我们希望通过图片合成的方式,创建一个类似下面样式的图片 I. 设计思路首先解析一下我们的目标实现图片合成,那么这些合成的基本组成单元有些什么?组成基本单元图片文字几何图形也就是说,我们可以将任意个图片,文字,几何图形,按照自己的意愿进行拼接,那么问题就转变成两个基本单元如何在画布上渲染基本单元之间如何配合使用II. 基本单元绘...

weixin_36051633的博客 1023

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java 图片合成插件_Java图片合成

给客户做了两张报表,导出两张图片,但是客户非要导出到一张图片,然后就用java把两张图片合成一张了。packagecom.zws;importjava.awt.Graphics;importjava.awt.p_w_picpath.BufferedImage;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputS...

weixin_36028243的博客 371

java 处理图片图片合成

最近写了一个java的图片合成相关的项目,真的是一踩一个坑,下面博主说说遇见的一些坑和怎么解决的这些问题。 本文主要讲图片合成,加文字还是比较简单的。 先讲下我的需求,把一张图片盖到另外一张图片上面,然后在图片上加上字 第一个版本 最开始的时候我用的是thumbnailator工具包,如上图效果 但是问题来了,这张图有很大的问题,两个图都是透明度发生了变化。 第二个版本 使用java自带的Graphics2D 代码如下 String blackPath = ""; String fon

吐蕃圣僧 1589

java合成两张图片

JAVA合成两张图片java合成两张图片 java合成两张图片 JAVA合成两场图片,经常用于生成推广图片,生成扫描二维码等。 public static final String combineCodeAndPic(String backPicPath , String logo) { ImageOutputStream imOut = null; try { BufferedImage big = ImageIO.read(new File(backPic

yushengpeng的博客 720
上一篇: java Calendar
下一篇: mysql grant
luckygl17
博客等级 码龄15年 8粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值