Android 使用Scrollow作为Bitmap进行海报图片的生成

2024-03-20 18:38

本文主要是介绍Android 使用Scrollow作为Bitmap进行海报图片的生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

许久没有写博客了,就近来项目中遇到的问题进行一下总结,以备下次遇到能够快速处理

目前的功能就是布局转化为bitmap生成海报然后保存到相册可以进行分享功能。

效果图如下

 /*** 截取scrollview的屏幕** @param scrollView* @return*/public Bitmap getBitmapByView(ScrollView scrollView) {int h = 0;Bitmap bitmap = null;// 获取scrollview实际高度for (int i = 0; i < scrollView.getChildCount(); i++) {h += scrollView.getChildAt(i).getHeight();//获取scrollView的屏幕高度scrollView.getChildAt(i).setBackgroundColor(Color.parseColor("#ffffff"));}//如果传的参数不是NestedScrollView,则不需要循环遍历高度
//        h += scrollView.getHeight();//获取scrollView的屏幕高度
//        scrollView.setBackgroundColor(
//                    Color.parseColor("#ffffff"));// 创建对应大小的bitmapbitmap = Bitmap.createBitmap(scrollView.getWidth(), h,Bitmap.Config.RGB_565);final Canvas canvas = new Canvas(bitmap);//把创建的bitmap放到画布中去scrollView.draw(canvas);//绘制canvas 画布return bitmap;}/*** 压缩图片** @param image* @return*/public Bitmap compressImage(Bitmap image) {ByteArrayOutputStream baos = new ByteArrayOutputStream();// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中image.compress(Bitmap.CompressFormat.JPEG, 100, baos);int options = 100;// 循环判断如果压缩后图片是否大于100kb,大于继续压缩while (baos.toByteArray().length / 1024 > 100) {// 重置baosbaos.reset();// 这里压缩options%,把压缩后的数据存放到baos中image.compress(Bitmap.CompressFormat.JPEG, options, baos);// 每次都减少10options -= 10;}// 把压缩后的数据baos存放到ByteArrayInputStream中ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());// 把ByteArrayInputStream数据生成图片Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);return bitmap;}/*** 保存到sdcard并返回路径地址** @param b* @return*/public String savePic(Bitmap b) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss",Locale.US);File file = Environment.getExternalStorageDirectory();// 如果文件不存在,则创建一个新文件if (!file.isDirectory()) {try {file.mkdir();} catch (Exception e) {e.printStackTrace();}}String fname = file.getAbsolutePath() + "/Pictures/" + sdf.format(new Date()) + "poster.png";File outFile = new File(fname);FileOutputStream fos = null;try {fos = new FileOutputStream(outFile);//获取FileOutputStream对象if (fos != null) {/*** 压缩图片* 第一个参数:要压缩成的图片格式* 第二个参数:压缩率* 第三个参数:压缩到指定位置*/boolean compress = b.compress(Bitmap.CompressFormat.PNG, 90, fos);if (compress) {//通知图库更新Intent intent = new Intent();intent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);intent.setData(Uri.fromFile(outFile));sendBroadcast(intent);ToastUtil.showCenterToast("保存图片到相册成功");} else {ToastUtil.showCenterToast("保存图片到相册失败");}fos.flush();fos.close();//最后关闭此文件输出流并释放与此流相关联的任何系统资源。}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return fname;}
    Bitmap bitmap = compressImage(getBitmapByView(nestedScrollview));//截取View的屏幕大小并压缩图片String savePic = savePic(bitmap);//把获取到的Bitmap对象压缩图片保存到本地中sdcardimageView.setImageBitmap(bitmap);//在把获取到的Bitmap对象在imageView中显示出来Log.i(TAG, savePic);

 关于这个海报页面我之所以用scrollow作为父布局是因为我起初用线性布局或者相对布局时报存到手机里面,小屏手机就会显示不全,导致无法扫描二维码,因此我就改变了方式作为滑动的就需要保存长图,图片也不会出现不全问题,完美解决了问题.

但是吧这个还有一个小问题,有时候点击保存到相册无反应,这个问题下篇文章再介绍吧

这篇关于Android 使用Scrollow作为Bitmap进行海报图片的生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830388

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]