-
2020-08-21 19:43:23
前言
应客户要求 需要把两张图片合成一张保存起来
一张背景图 一张二维码图
用于二维码扫描 区分代理和上下级关系期望の效果
实现流程
背景图 客户希望是自己可以上传 这样不那么单调
我们从后台接口回去imageUrl
转成Bitmap
就可以了二维码由我们客户端生成 然后和背景图 合成一张图 长按保存到相册
先说一下 如何用Glide 转成Bitmap 这个问题之前也困了我一会时间
使用Glide版本4.6.2
,如果是版本小于4.0
版本 下面的方法对你可能不适用!//backgroundUrl就是后台获取的url if (backgroundUrl != null) { //加载背景图 if (UserUtils.getAppConfig() != null) { String apiUrl = UserUtils.getAppConfig().getApp_url(); //按照后台要求拼接图片地址 String imaUrl = apiUrl + backgroundUrl; Glide.with(this).asBitmap().load(imaUrl).into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { //在这里面用bitmap 这个方法返回的就是bitmap glide去处理的 // 能正常加载图片 就说明bitmap没问题 mIvSaveImage.setImageBitmap(resource); bitmaps[0] = resource; } }); } else { mIvSaveImage.setImageDrawable(getResources().getDrawable(R.drawable.yaoqing_haoyou)); }
二维码生成
二维码生成用Zxing 就可以了 简单方便 几行代码就可以解决了。
//二维码生成 implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'
代码实现
QRCodeEncoder
这个类里面有很多方法 可以根据需求去适用
可以设置logo 也可以设置前景图颜色//生成Bitmap 尺寸为100px Bitmap bitmap = QRCodeEncoder.syncEncodeQRCode(QRUrl, 100);
图片合成
两张图都拿到了 现在就是把2个
Bitmap
合成一张就可以了/** * * @param background 背景图 * @param foreground 前景图 * @return */ public static Bitmap combineBitmap(Bitmap background, Bitmap foreground) { if (background == null) { return null; } int bgWidth = background.getWidth(); int bgHeight = background.getHeight(); int fgWidth = foreground.getWidth(); int fgHeight = foreground.getHeight(); Bitmap newmap = Bitmap.createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(newmap); canvas.drawBitmap(background, 0, 0, null); canvas.drawBitmap(foreground, 450, 580, null);//设置二维码所在的位置 这个可以写死 canvas.save(); canvas.restore(); return newmap; }
拿到の效果图
共勉
我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天
更多相关内容 -
JS多张图片合成一张图片代码.zip
2019-07-11 10:43:38JS多张图片合成一张图片代码是一款基于canvas制作多张元素图片合成一张效果代码。 -
JS多张图片合成一张图片特效代码
2021-03-20 03:56:08JS多张图片合成一张图片代码是一款基于canvas制作多张元素图片合成一张效果代码。 JS多张图片合成一张图片代码截图 -
php图片合成方法(多张图片合成一张)
2020-10-18 23:12:00下面小编就为大家分享一篇php图片合成方法(多张图片合成一张),具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧 -
jQuery多张图片上传合成一张代码
2021-06-24 11:07:00jQuery多张图片上传合成一张代码,选择要上次的图片依次上传,然后再点击合成图片就可以了。 -
php实现多张图片合成一张
2017-03-01 14:56:59php实现多张图片合成一张,包含文档,代码,和所需资源 -
DELPHI多图片合成一图片
2018-12-19 21:28:20。。。。。。。DELPHI多图片合成一图片 -
多张图片合成一张图片工具
2017-08-19 13:21:44类似于照片墙的效果,几张图片叠在一起,合成一张图片 -
js+canvas多张图片合成一张图片代码.zip
2020-04-14 08:44:18js+canvas多张图片合成一张图片代码 -
java多张图片合成,图片拼接,图片上写字
2018-01-20 16:11:10图片工具类(多张图片合成,图片拼接,图片上写字),java语言实现 -
jQuery多张图片上传合成一张特效代码
2021-03-20 03:55:56jQuery多张图片上传合成一张代码,选择要上次的图片依次上传,然后再点击合成图片就可以了。 -
labview将2张图片合成1张图片并显示在控件_labview_labview教程_Labview合成图片
2021-09-10 15:23:16labview he cheng two picture to one -
Java将多张图片合成为一张图像.rar
2019-07-10 09:45:02Java将多张图片合成为一张,类似于PhotoShop中的合成图片,将两张图片合成输出为一张JPG,两幅图像叠加在一起,这是个比较基础的Java图像合成的例子。在JAVA中实现图片合成,本例的实现核心代码如下: InputStream... -
Android开发之将两张图片合并为一张图片的方法
2020-09-02 22:06:44主要介绍了Android开发之将两张图片合并为一张图片的方法,涉及Android基于Canvas类操作图片的相关技巧,需要的朋友可以参考下 -
多张图片合成一张+打水印+登录窗口.rar
2019-10-12 17:55:42多张图片合成一张+打水印标签+登录窗口DEMO,多张图片合成一张+打水印标签+登录窗口DEMO -
微信小程序实现张图片合成为一张并下载
2020-10-16 17:07:30主要为大家详细介绍了微信小程序实现张图片合成为一张并下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
jQuery多张图片上传合成一张代码.zip
2019-07-04 23:43:42jQuery多张图片上传合成一张代码,选择要上次的图片依次上传,然后再点击合成图片就可以了。 -
《ffmpeg入门学习》 五 多个图片合成一张图片
2019-05-21 15:56:17场景:可能会遇到这样的需求,让我们查看一天每个小时的变化情况,并在一张图片中体现出来,那这就需要利用图片的切割和合成技术。 首先,我们需要把每天的每个小时图片,切割成一张图片,再把24个小时拼接成一个...1.准备
场景:可能会遇到这样的需求,让我们查看一天每个小时的变化情况,并在一张图片中体现出来,那这就需要利用图片的切割和合成技术。
首先,我们需要把每天的每个小时图片,切割成一张图片,再把24个小时拼接成一个完整的图片
原图:
切割图:
切割图片,请看https://blog.csdn.net/qq_16855077/article/details/90378173
代码的这两个地方改为12 1.jpg 13 2.jpg 14 3.jpg,生成的图片如下图
合成图:
2.代码
package com.qihui.qxj.utils; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; /** * 图片拼接 把多张宽度一样的图片拼接成一张大图片 * * @author Administrator * */ public class CreateBigImage { public static void main(String[] args) { // 获取宽度相同的图片 String img1 = "D:/a/1.jpg"; String img2 = "D:/a/2.jpg"; String img3 = "D:/a/3.jpg"; String[] imgs = new String[] { img1, img2, img3 }; //Image.mergeImage(imgs, 1, "D:/big.jpg"); // //图片拼接 merge(imgs, "jpg", "D:/big.jpg"); } /** * Java拼接多张图片 * * @param pics:图片源文件 * (必须要宽度一样),如: String img1 = "D:/imgs/3.jpg"; String img2 = * "D:/imgs/3.jpg"; String img3 = "D:/imgs/big.jpg"; String[] * pics = new String[]{img1,img2,img3}; * @param type * :图片输出类型(jpg,png,jpeg...) * @param dst_pic * :图片输出绝对路径,如 String dst_pic="D:/imgs/big2.jpg"; * @return */ public static boolean merge(String[] pics, String type, String dst_pic) { int len = pics.length; // 图片文件个数 if (len < 1) { System.out.println("pics 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(pics[i]); images[i] = ImageIO.read(src[i]); } catch (Exception e) { e.printStackTrace(); return false; } int width = images[i].getWidth(); int height = images[i].getHeight(); ImageArrays[i] = new int[width * height];// 从图片中读取RGB ImageArrays[i] = images[i].getRGB(0, 0, width, height, ImageArrays[i], 0, width); } int dst_width = 0; int dst_height = 0; for (int i = 0; i < images.length; i++) { dst_width += images[i].getWidth(); dst_height = dst_height > images[i].getHeight() ? dst_height : images[i].getHeight(); } System.out.println(dst_width); System.out.println(dst_height); // 生成新图片 try { 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, images[i].getWidth()); 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; } }
到这里,图片的合成就完成勒。
如果你热衷技术,喜欢交流,欢迎加入我们!
-
如何将两张图片合成一张图片?
2021-02-05 09:59:25您可能感兴趣的话题:美图秀秀核心提示:图片叠加的方法也有几种,小编认为最好用、效果最好的是...问题:如何将2个图片合成到1个啊?小编解答:图片叠加的方法也有几种,小编认为最好用、效果最好的是抠图叠加法,...您可能感兴趣的话题:
美图秀秀
核心提示:图片叠加的方法也有几种,小编认为最好用、效果最好的是美图秀秀抠图叠加法。
看到许多网友焦急的询问一些图片处理方面的问题,一时又没人给点温馨的帮助,一向助人为乐的小编就坐不住了。小编决定使出浑身解数,把自己仅有的一点P图“墨水”贡献出来,希望可以帮助到大家。
问题:如何将2个图片合成到1个啊?
小编解答:图片叠加的方法也有几种,小编认为最好用、效果最好的是抠图叠加法,方法如下:
首先用美图秀秀打开图片,在界面的右上方选择“抠图工具”。大家可以看到抠图编辑框里有三种抠图方法,最简单的就是形状抠图,还有懒人的自动抠图。不过小编想习惯要粗犷而犀利的抠图线条,就选择了手动抠图,在人物周边很随意的添加抠图节点,围绕一周后,就可以选择“完成抠图”。
在这里,我们选择新出CP范冰冰和李晨!
首先,打开图片。
选择左侧的抠图。
选择第二项,手动抠图。
这就是展现你才华的时刻了,这个和ps钢笔抠图略像。
当你完成抠图的时刻,点击保存为前景。
这时候背景仍旧是透明色!
此时采用同上的方法~将李晨帅气的面容抠出来!同样保存为前景!
下面就可以进行图片叠加了。
小编在此处拖进一张白色打底,当然小伙伴也可以直接选择拼图!
不过这里最方便的是你可以随便移动位置,不用担心色泽的差异,从而使图片可以更为逼真!
这时候在右侧饰品区用户自定义点击就可以成功合成啦!
这时候如果你觉得李晨简直是个暴露狂!
给他加件西装!
因为素材的大小,所以我们要将图片大小进行调解,才能更完美的结合!
好啦!今天的问题解答就到这吧,希望能够切实帮到大家。如果大家在处理图片时还遇到什么问题,小编也愿意跟大家分享自己的一些心得,如果要拍板砖的,也请轻点吧。
-
Android实现andengine中直接加载多张小图片合成一张大图片生成动画精灵_图片效果展示.zip
2021-09-11 16:51:32andengine中直接加载多张小图片合成一张大图片生成动画精灵 -
如何利用qt合成图片
2018-07-22 17:05:01如何利用qt合成图片,本例主要利用两张图片进行合成一张 -
利用Python将多张图片合成视频的实现
2021-01-19 23:22:23#读取一张图片 size = (432,288) print(size) #完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参数是可以使用的编码器,第三个参数是帧率即每秒钟展示多少张图片,第四个参数是图片大小信息 ... -
canvas实现二维码和图片合成的示例代码
2020-12-13 21:56:04上个版本街道一个需求,使用url生成一个二维码,然后和另外一张图片合成一张图拍你, 实现思路是这样的 使用jr-qrcode将url生成[removed] { Component } from 'react' -
微信小程序实现的canvas合成图片功能示例
2020-10-17 01:38:15主要介绍了微信小程序实现的canvas合成图片功能,结合实例形式分析了微信小程序canvas合成图片相关组件使用、操作步骤与注意事项,需要的朋友可以参考下 -
利用Java程序把多张图片合成一张图片
2008-11-10 11:59:12利用Java程序把多张图片合成一张图片,利用Java程序把多张图片合成一张图片。