精华内容
下载资源
问答
  • 2020-08-21 19:43:23

    前言

    应客户要求 需要把两张图片合成一张保存起来
    一张背景图 一张二维码图
    用于二维码扫描 区分代理和上下级关系

    期望の效果

    1

    实现流程

    背景图 客户希望是自己可以上传 这样不那么单调
    我们从后台接口回去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;
        }
    

    拿到の效果图

    2

    共勉

    我要一步一步往上爬
    在最高点乘着叶片往前飞
    任风吹干流过的泪和汗
    我要一步一步往上爬
    等待阳光静静看着它的脸
    小小的天有大大的梦想
    我有属于我的天
    任风吹干流过的泪和汗
    总有一天我有属于我的天
    snail

    更多相关内容
  • JS张图片合成一张图片代码是一款基于canvas制作张元素图片合成一张效果代码。
  • JS张图片合成一张图片代码是一款基于canvas制作张元素图片合成一张效果代码。 JS张图片合成一张图片代码截图
  • 下面小编就为大家分享一篇php图片合成方法(图片合成一张),具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
  • jQuery图片上传合成一张代码,选择要上次的图片依次上传,然后再点击合成图片就可以了。
  • php实现图片合成一张,包含文档,代码,和所需资源
  • 。。。。。。。DELPHI多图片合成图片
  • 类似于照片墙的效果,几张图片叠在一起,合成一张图片
  • js+canvas张图片合成一张图片代码
  • 图片工具类(图片合成图片拼接,图片上写字),java语言实现
  • jQuery图片上传合成一张代码,选择要上次的图片依次上传,然后再点击合成图片就可以了。
  • labview he cheng two picture to one
  • Java将图片合成为一张,类似于PhotoShop中的合成图片,将两张图片合成输出为一张JPG,两幅图像叠加在一起,这是个比较基础的Java图像合成的例子。在JAVA中实现图片合成,本例的实现核心代码如下:  InputStream...
  • 主要介绍了Android开发之将两张图片合并为一张图片的方法,涉及Android基于Canvas类操作图片的相关技巧,需要的朋友可以参考下
  • 图片合成一张+打水印标签+登录窗口DEMO,图片合成一张+打水印标签+登录窗口DEMO
  • 主要为大家详细介绍了微信小程序实现张图片合成为一张并下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • jQuery图片上传合成一张代码,选择要上次的图片依次上传,然后再点击合成图片就可以了。
  • 场景:可能会遇到这样的需求,让我们查看一天每个小时的变化情况,并在一张图片中体现出来,那这就需要利用图片的切割和合成技术。 首先,我们需要把每天的每个小时图片,切割成一张图片,再把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范冰冰和李晨!

    首先,打开图片。2ddd4c47e72ce75de53470fd25eadb0f.png

    选择左侧的抠图。

    选择第二项,手动抠图。364ebea6d8fd6d80d9ec27ed11a38967.png

    这就是展现你才华的时刻了,这个和ps钢笔抠图略像。a71a5ea976a9e971f1b895efcd6773b6.png0136056032047a1b5b662a90e61a644c.png

    当你完成抠图的时刻,点击保存为前景。

    这时候背景仍旧是透明色!2b44059a2cd5f7a2af6ce3ab37199bde.png21cbc10d119561660e848da88084efbf.png7458ed09d031bd15a9487f5561a67925.png

    此时采用同上的方法~将李晨帅气的面容抠出来!同样保存为前景!8fe2247d4cbe22ddeb31fbd47bbd95d6.png

    下面就可以进行图片叠加了。

    小编在此处拖进一张白色打底,当然小伙伴也可以直接选择拼图!

    不过这里最方便的是你可以随便移动位置,不用担心色泽的差异,从而使图片可以更为逼真!3a31c2978c7f52a089b12e54ef1715d2.png

    这时候在右侧饰品区用户自定义点击就可以成功合成啦!6af76c549627b92c01ccbf3d38d6d5d9.png

    这时候如果你觉得李晨简直是个暴露狂!

    给他加件西装!4bea92fd16e12d218803b968f9b33636.png

    因为素材的大小,所以我们要将图片大小进行调解,才能更完美的结合!3f65dcc69ccda2e5f1d353154f75a868.png

    好啦!今天的问题解答就到这吧,希望能够切实帮到大家。如果大家在处理图片时还遇到什么问题,小编也愿意跟大家分享自己的一些心得,如果要拍板砖的,也请轻点吧。

    展开全文
  • andengine中直接加载张小图片合成一张图片生成动画精灵
  • 如何利用qt合成图片

    2018-07-22 17:05:01
    如何利用qt合成图片,本例主要利用两张图片进行合成一张
  • #读取一张图片 size = (432,288) print(size) #完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参数是可以使用的编码器,第三个参数是帧率即每秒钟展示多少张图片,第四个参数是图片大小信息 ...
  • 上个版本街道一个需求,使用url生成一个二维码,然后和另外一张图片合成一张图拍你, 实现思路是这样的 使用jr-qrcode将url生成[removed] { Component } from 'react'
  • 主要介绍了微信小程序实现的canvas合成图片功能,结合实例形式分析了微信小程序canvas合成图片相关组件使用、操作步骤与注意事项,需要的朋友可以参考下
  • 利用Java程序把张图片合成一张图片,利用Java程序把张图片合成一张图片

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,025
精华内容 8,010
关键字:

多图合成一张图片