使用base64 对图像进行 转换的小程序。附上对视频进行截图的功能程序。

使用【Blob、Base64】两种方式显示【文本、图片、视频】 & 使用 video 组件播放视频 Blob 对象的类型是由 MIME 类型(Multipurpose Internet Mail Extensions)来确定的。MIME 类型是一种标准,用于表示文档、图像、音频、视频等多媒体文件的类型。 阅读详情
java端,对jpeg图像转码成 base64字串
  1. /*
  2.  * Created on 2008-9-25
  3.  *
  4.  * 徐泽宇 roamer
  5.  */
  6. package tester;
  7. import java.io.FileInputStream;
  8. import java.io.FileOutputStream;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.io.OutputStream;
  12. import sun.misc.BASE64Decoder;
  13. import sun.misc.BASE64Encoder;
  14. public class Image2Base64 
  15. {
  16.     public static void main(String[] args)
  17.     {
  18.         String strImg = GetImageStr();
  19.         GenerateImage(strImg);
  20.     }
  21.     public static String GetImageStr()
  22.     {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
  23.         String imgFile = "d://1.jpg";//待处理的图片
  24.         InputStream in = null;
  25.         byte[] data = null;
  26.         //读取图片字节数组
  27.         try 
  28.         {
  29.             in = new FileInputStream(imgFile);        
  30.             data = new byte[in.available()];
  31.             in.read(data);
  32.             in.close();
  33.         } 
  34.         catch (IOException e) 
  35.         {
  36.             e.printStackTrace();
  37.         }
  38.         //对字节数组Base64编码
  39.         BASE64Encoder encoder = new BASE64Encoder();
  40.         System.out.print(encoder.encode(data));
  41.         return encoder.encode(data);//返回Base64编码过的字节数组字符串
  42.     }
  43.     public static boolean GenerateImage(String imgStr)
  44.     {//对字节数组字符串进行Base64解码并生成图片
  45.         if (imgStr == null) //图像数据为空
  46.             return false;
  47.         BASE64Decoder decoder = new BASE64Decoder();
  48.         try 
  49.         {
  50.             //Base64解码
  51.             byte[] b = decoder.decodeBuffer(imgStr);
  52.             for(int i=0;i<b.length;++i)
  53.             {
  54.                 if(b[i]<0)
  55.                 {//调整异常数据
  56.                     b[i]+=256;
  57.                 }
  58.             }
  59.             //生成jpeg图片
  60.             String imgFilePath = "d://2.jpg";//新生成的图片
  61.             OutputStream out = new FileOutputStream(imgFilePath);    
  62.             out.write(b);
  63.             out.flush();
  64.             out.close();
  65.             return true;
  66.         } 
  67.         catch (Exception e) 
  68.         {
  69.             return false;
  70.         }
  71.     }
  72. }
flex 这端对base64编码 转换成图片
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white"
  6.         creationComplete="init();">
  7.  
  8.     <mx:Script>
  9.         <![CDATA[
  10.             import mx.utils.Base64Decoder;
  11.            
  12.             private var base64Dec:Base64Decoder;
  13.             
  14.             private function decode():void{
  15.                 
  16.             }
  17.             
  18.             private function load():void{
  19.                 mx.controls.Alert.show(this.textArea.text);
  20.                 var byteArr:ByteArray;
  21.  
  22.                 base64Dec = new Base64Decoder();
  23.                 base64Dec.decode(this.textArea.text);
  24.  
  25.                 byteArr = base64Dec.toByteArray();
  26.  
  27.                 img.load(byteArr);
  28.             }
  29.             
  30.             private function init():void {
  31.                 
  32.             }
  33.         ]]>
  34.     </mx:Script>
  35.  
  36.     
  37.  
  38.     <mx:Form width="100%" height="100%">
  39.         <mx:FormItem label="image:">
  40.             <mx:Image id="img" />
  41.         </mx:FormItem>
  42.         <mx:FormItem label="source:"
  43.                 width="100%"
  44.                 height="100%">
  45.             <mx:TextArea id="textArea"
  46.                     text=""
  47.                     editable="true"
  48.                     width="100%"
  49.                     height="100%" />
  50.         </mx:FormItem>
  51.     </mx:Form>
  52.     <mx:Button label="显示" click="load()">
  53.         
  54.     </mx:Button>
  55.  
  56. </mx:Application>
对视频进行截图。然后生成base64字符串传递给RO的小程序。
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="388" height="454" creationComplete="initApp()">
  3.     <mx:Style>
  4.         Alert{font-size:12px;}
  5.     </mx:Style>
  6.     <mx:Script>
  7.         <![CDATA[
  8.             import mx.events.CloseEvent;
  9.             import mx.rpc.events.FaultEvent;
  10.             import mx.rpc.events.ResultEvent;
  11.             import mx.controls.Alert;
  12.             import mx.rpc.remoting.RemoteObject;
  13.             import mx.graphics.ImageSnapshot;
  14.             
  15.             private static const DEFAULT_CAMERA_WIDTH:Number = 160; //摄像头显示宽度
  16.             private static const DEFAULT_CAMERA_HEIGHT:Number = 120; //摄像头显示高度
  17.             private static const DEFAULT_WEBSERVICE_URL:String = "http://localhost:1888/Web/TestWebService.asmx?WSDL"; //WebService地址
  18.             
  19.             private var m_camera:Camera; //定义一个摄像头
  20.             private var m_localVideo:Video; //定义一个本地视频
  21.             private var m_pictureBitmapData:BitmapData //定义视频截图
  22.             [Bindable]
  23.             private var m_pictureData:String;
  24.             [Bindable]
  25.             private var base64String:String="";
  26.             
  27.             private function initApp():void
  28.             {
  29.                 t_btn_Shooting.enabled = false;
  30.                 t_ban_Save.enabled = false;
  31.                 initCamera();
  32.             }
  33.             
  34.             //初始化摄像头
  35.             private function initCamera():void
  36.             {
  37.                 m_camera = Camera.getCamera();
  38.                 if(m_camera != null)
  39.                 {
  40.                     m_camera.addEventListener(StatusEvent.STATUS,__onCameraStatusHandler);
  41.                     
  42.                     m_camera.setMode(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT,30);
  43.                     m_localVideo = new Video();
  44.                     m_localVideo.width = DEFAULT_CAMERA_WIDTH;
  45.                     m_localVideo.height = DEFAULT_CAMERA_HEIGHT;
  46.                     m_localVideo.attachCamera(m_camera);
  47.                     t_vd_Video.addChild(m_localVideo);
  48.                 }
  49.                 else
  50.                 {
  51.                     Alert.show("没有找到摄像头,是否重新查找。","提示:",Alert.OK|Alert.NO,this,__InitCamera);
  52.                     return;
  53.                 }
  54.             }
  55.             
  56.             //拍照按钮事件,进行视频截图
  57.             private function SnapshotPicture():void
  58.             {
  59.                 m_pictureBitmapData = new BitmapData(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT);
  60.                 m_pictureBitmapData.draw(t_vd_Video,new Matrix());
  61.                 
  62.                 var m_pictureBitmap:Bitmap = new Bitmap(m_pictureBitmapData);
  63.                 t_img_Picture.addChild(m_pictureBitmap);
  64.                 
  65.                 t_panel_Picture.visible = true;
  66.                 t_ban_Save.enabled = true;
  67.             }
  68.             
  69.             //保存按钮事件,保存视频截图
  70.             //通过RO保存
  71.             private function SavePicture():void
  72.             {
  73.                 var ohSnap:ImageSnapshot = ImageSnapshot.captureImage(this.t_img_Picture);
  74.                 this.base64String= ImageSnapshot.encodeImageAsBase64(ohSnap);
  75.                 this.picString.text =base64String;
  76.                 var ro:RemoteObject = new RemoteObject("cameraServiceRO");
  77.                 ro.addEventListener(FaultEvent.FAULT,__onSavePictureFault);
  78.                 ro.addEventListener(ResultEvent.RESULT,__onSavePictureResult);
  79.                 ro.save(this.base64String);
  80.             }
  81.             
  82.             //检测摄像头权限事件
  83.             private function __onCameraStatusHandler(event:StatusEvent):void
  84.             {
  85.                 if(!m_camera.muted)
  86.                 {
  87.                     t_btn_Shooting.enabled = true;
  88.                 }
  89.                 else
  90.                 {
  91.                     Alert.show("无法链接到活动摄像头,是否重新检测。","提示:",Alert.OK|Alert.NO,this,__InitCamera);
  92.                 }
  93.                 m_camera.removeEventListener(StatusEvent.STATUS,__onCameraStatusHandler);
  94.             }
  95.             
  96.             //当摄像头不存在,或连接不正常时重新获取
  97.             private function __InitCamera(event:CloseEvent):void
  98.             {
  99.                 if(event.detail == Alert.OK)
  100.                 {
  101.                     initApp();
  102.                 }
  103.             }
  104.             
  105.             //WebService保存图片成功事件
  106.             private function __onSavePictureResult(event:ResultEvent):void
  107.             {
  108.                     Alert.show("ok");
  109.             }
  110.             
  111.             //连接WebService失败事件
  112.             private function __onSavePictureFault(event:FaultEvent):void
  113.             {
  114.                 //Alert.show(event.fault.toString(),"提示",Alert.OK);
  115.                 Alert.show(event.fault.toString());
  116.             }
  117.             
  118.             //保存图片成功后的弹出窗口确认事件
  119.             private function __onAlertCloseHandler(event:CloseEvent):void
  120.             {
  121.                 if(event.detail == Alert.OK)
  122.                 {
  123.                     //trace("转向页面");
  124.                 }
  125.             }
  126.         ]]>
  127.     </mx:Script>
  128.     <mx:Panel x="10" y="10" width="180" height="200" layout="absolute" title="视频拍照" fontSize="12">
  129.         <mx:VideoDisplay id="t_vd_Video" width="160" height="120"/>
  130.         <mx:ControlBar horizontalAlign="right">
  131.             <mx:Button id="t_btn_Shooting" label="拍照" click="SnapshotPicture()"/>
  132.         </mx:ControlBar>
  133.     </mx:Panel>
  134.     <mx:Panel id="t_panel_Picture" x="198" y="10" width="180" height="200" layout="absolute" title="拍照图片" fontSize="12" visible="false">
  135.         <mx:Image id="t_img_Picture" x="0" y="0" width="160" height="120"/>
  136.         <mx:ControlBar  horizontalAlign="right">
  137.             <mx:Button id="t_ban_Save" label="保存" click="SavePicture()" />
  138.         </mx:ControlBar>
  139.     </mx:Panel>
  140.     <mx:TextArea text="{base64String}"  id="picString" x="10" y="218" width="368" height="226"/>
  141. </mx:Application>


微信小程序中使用Base64编码解码 创建js-base64.js文件 (function(global) { 'use strict'; var global = global || {}; var _Base64 = global.Base64; var version = "1.0.0"; var buffer; var b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; var b64tab = func 阅读详情

相关推荐

微信小程序-live-player-实时视频-截图与文件流转换实战

本文详细介绍了微信小程序live-player组件的使用技巧,重点讲解了实时视频截图与文件流转换的实战方法。通过具体代码示例,展示了如何实现高效截图、Base64转ArrayBuffer等关键技术,并提供了内容审核、用户互动等实际应用场景的优化建议,帮助开发者快速掌握微信小程序直播功能开发。

weixin_29306011的博客 271

微信小程序选择本地图片、视频的最新方法chooseMedia,转为为base64上传到后端接口

本篇将介绍如何使用最新方法进行选择图片上传并回显,以及转为为base64上传到后端接口。

coderYYY的博客 1万+

UniApp截图功能全解析:从原理到实战,解决跨端兼容与性能难题

在移动应用开发中,截图功能是常见的用户交互需求,它允许用户将屏幕内容保存为图片,用于分享或记录。其核心原理通常涉及对视图层的像素捕获或Canvas绘制,技术价值在于能提升用户体验和内容传播效率,广泛应用于社交分享、内容保存、问题反馈等场景。然而,在跨平台框架如UniApp中实现截图,会面临原生API差异、权限管理和性能优化等挑战。本文聚焦于**UniApp**环境下的截图实践,深入探讨了**全屏截图**与**自定义区域截图**两种典型场景的实现方案、避坑指南以及性能优化策略,为开发者提供一套兼顾功能与稳定性

weixin_30487201的博客 394

uni-app 微信小程序 查看 base64 文件流格式的 pdf

uni-app 微信小程序 查看 base64 文件流格式的 pdf

xiamoziqian的博客 2825

UniApp跨平台视频封面自动提取:H5与APP端兼容实现方案

在移动应用与Web开发中,视频封面作为用户交互的第一触点,直接影响点击率与用户体验。其技术原理涉及视频解码、帧捕获与图像渲染等核心概念。通过客户端本地提取首帧,开发者能够在不依赖服务器的情况下,实现即时预览与资源优化,这对于提升内容平台的运营效率与用户体验具有重要价值。该技术广泛应用于短视频、内容管理、社交分享等场景,尤其在UniApp这类跨平台框架中,需处理H5与原生APP的环境差异。本文聚焦于UniApp环境下,通过条件编译与原生API桥接,解决视频封面自动提取的兼容性问题,并融入性能优化与异常处理等工

weixin_30595035的博客 432

别再为跨端发愁了!用uni-app的live-pusher组件搞定App端人脸识别(附完整代码)

本文详细介绍了如何利用uni-app的live-pusher组件实现跨平台App端人脸识别功能。通过直播推流技术解决传统camera组件的平台兼容性问题,提供完整的代码示例和性能优化技巧,帮助开发者快速构建高效、安全的人脸识别解决方案。

weixin_30675247的博客 554

base64、blob格式相互转换及应用

1.Base64 to Blob function dataURLtoBlob(dataurl) { var arr = dataurl.split(','), //分割为数组,分割到第一个逗号 let mime = arr[0].match(/:(.*?);/)[1],//获取分割后的base64前缀中的类型 let bstr = window.atob(arr[1]), let n = bstr.length, let u8arr = new Uint8Arr

龘 4831

PixVerse Canvas:AI驱动的轻量级动态视觉内容创作工具解析

Canvas作为图形渲染的核心概念,在Web开发中通常指代HTML5 Canvas API,用于程序化绘制图形与图像。其原理是通过JavaScript调用底层绘图指令,实现对像素的精确控制,广泛应用于数据可视化、图片合成等场景。随着AI技术的发展,Canvas的概念被拓展,与AI生成能力结合,催生了新的内容创作范式。这种融合的技术价值在于,它能够将静态视觉元素智能转化为动态内容,大幅降低动态素材制作门槛。在应用场景上,尤其适用于需要快速迭代、风格化表达的社交媒体营销、产品演示等领域。PixVerse Can

weixin_30265103的博客 485

canvas绘制图片,html2canvas截图绘制

canvas绘制图片 html代码: <canvas id="myCanvas"></canvas> js代码: var mycanvas=document.getElementById("myCanvas"); var ctx=mycanvas.getContext("2d"); var img=document.createElement("img"); img.src='';//图片路径 img.onload=function(){ mycanvas.width=im

weixin_41674235的博客 576

Clawhub Skills:微信PC端UI自动化的能力协议与实践指南

Clawhub Skills 是一种面向微信桌面客户端的轻量级智能体能力协议,本质是定义‘在什么场景下执行什么动作’的标准化JSON契约,而非传统代码模块或小程序插件。其原理依托系统级无障碍API(Windows UI Automation/macOS Accessibility/Linux X11)实现UI层操作,绕过微信内部JS API,具备跨版本稳定性与免越狱/免root特性。技术价值在于将脆弱的UI自动化封装为可复用、可组合、可版本管理的原子能力单元,显著提升运营、客服、SCRM等场景下的批量处理效

注重长远 天天积累 cqujsjcyj 212

SRC漏洞实战:从信息收集到报告撰写的完整挖洞指南

在网络安全领域,漏洞挖掘是识别和利用系统安全缺陷的核心技术。其原理在于通过系统化的方法,分析应用程序的逻辑、输入验证和配置,发现可被利用的弱点。这项技术的价值在于主动发现风险,帮助企业加固防御,对于安全研究人员而言,也是将理论知识转化为实践能力的关键路径。典型的应用场景包括对Web应用、API接口以及企业各类在线业务系统的安全性评估。其中,信息收集是构建全面攻击面的基础,而逻辑漏洞则因其对业务流的深刻理解,往往能发现高价值的风险点。本文聚焦于SRC漏洞实战,深入拆解如何通过系统化的目标选择、深度信息收集和针

weixin_34152820的博客 518

别再为跨端发愁了!用uni-app的live-pusher组件搞定App/H5人脸识别(附完整代码)

本文深入解析如何利用uni-app的live-pusher组件实现跨平台人脸识别功能,解决App/H5等多端兼容性问题。通过对比camera组件,详细介绍了live-pusher的优势、环境配置、核心代码实现及性能优化技巧,并附完整代码示例,帮助开发者高效完成跨端人脸识别功能开发。

weixin_33739523的博客 536

从零构建人脸识别考勤系统:Python+Flask+FaceNet完整实战指南

人脸识别作为计算机视觉的核心技术,通过深度学习模型将人脸图像映射为高维特征向量,并在欧氏空间中通过距离计算实现身份比对。这项技术的工程价值在于将算法模型转化为可落地的应用系统,解决身份验证、安防监控等实际问题。在课堂考勤、办公签到等场景中,基于人脸识别的自动化方案能有效提升效率与准确性。本文以**人脸识别考勤系统**为例,详细剖析如何利用**Python**、**Flask**、**OpenCV**与**FaceNet**构建完整可用的解决方案,涵盖从技术选型、系统架构到核心代码实现的全过程,为开发者提供从

weixin_29055699的博客 304

好链接收藏

Maven搜索-最快捷的Maven搜索-由源码阅读网提供技术服务 (coderead.cn)在线画图工具ProcessOn在线画图工具draw.io在线思维导图工具PlantUML在线编辑器BASE64加密解密MD5编码工具AES/DES加解密JWT解码工具ASCII编解码工具Unicode编解码工具UTF-8编解码工具字符串编解码工具URL编解码工具在线ASCII码对照表通用进制转换工具在线浮点数十进制转换RGB颜色转换时间戳转换工具计量单位换算工具在线JSON解析在线JS代码格式化工具SQL压缩/格式化

daqi1983的博客 1697

ElementUI时间选择器(el-date-picker)输入格式的智能转换与动态适配

本文深入探讨了ElementUI时间选择器(el-date-picker)在处理用户自由格式输入时的痛点,并提出了基于Vue自定义指令的智能转换解决方案。该方案通过核心解析函数自动识别如“20231225”等连续数字输入,将其动态转换为标准时间格式,并确保与表单验证兼容,有效提升了后台管理系统的输入效率和用户体验。

weixin_29016833的博客 294

【OpenCV3】cv::compare()使用详解

cv::compare()主要用于两个图像之间进行逐像素的比较,并输出比较的结果。具体用法如下: cv::compare() bool cv::compare( cv::InputArray src1, // 输入数组1 cv::InputArray src2, // 输入数组2 cv::OutputArray dst, // 输出数组 int cmpop // 比较操作子,见下表 ...

guduruyu的专栏 9761

实用的网站、工具(科研学术、wps、作图、教程和文档、在线开发工具、在线编程学习、文档笔记工具、办公工具、写作、设计制作类、素材库)

==科研学术== Sci-Hub:SciHub科研学术网址导航 ==wps相关== pdf 转换工具 PDF派 CleverPDF 迅捷PDF转换器 免费模板 优品PPT OfficePlus 第一PPT ==作图== 在线画图工具ProcessOn 在线画图工具draw.io 在线思维导图工具 PlantUML在线编辑器 免费在线图片编辑器 - 在线抠图、改图、修图、美图 - PhotoKit.com ==在线教程和文档== Git中文教程 SVN中文手册 jQuery API中文文档 Nginx中文文档

liangjiayy的博客 7490

从UE4到Unity:双叶高光技术在角色皮肤渲染中的移植全流程

本文详细解析了将UE4中的双叶高光技术移植到Unity引擎的全流程。该技术通过模拟皮肤油脂层和真皮层的不同反射特性,能显著提升角色皮肤渲染的真实感。文章从核心原理、贴图资产处理、Shader代码重构到参数调校,提供了完整的跨引擎移植实战指南,帮助开发者实现高质量的皮肤质感还原。

alice7model的博客 479

推荐一个开源的工具导航网站非常不错哦!

从 JSON 解析到 API 调试,从二维码生成到图像优化,覆盖全栈开发核心需求。JiSuXiang 是一款开源在线开发者工具平台,集成多种实用开发工具,涵盖 JSON 处理、编码解码、网络调试等核心场景。平台通过统一交互界面整合高频开发需求,为前端工程师、后端开发者及全栈程序员提供效率提升解决方案。IT行业近二十年的IT老炮。岗位历经系统集成、DBA、全栈开发、sre、项目经理、产品经理、部门总监。

IT运维技术圈 1012

MATPOWER的安装详细教程

MATPOWER的安装包实际为一个程序包,安装教程很简单,详见本文。

半个月亮Zz的博客 3万+

CentOS 9 Stream 上安装 MySQL 8.0+

根据提示进行设置,包括设置新的 root 密码、禁用远程 root 登录等。MySQL 在首次安装时会生成一个临时密码。这样就完成了 MySQL 8.0.37 的安装。这将安装最新的 MySQL 8.0 版本。

小强不是坑 1679

AI功能测试实战篇

边界词是指。

qq_45334136的博客 414

分析方法—temporal receptive field(TRF)

总结来说,时间感受野其实就是一个 filter!课程中的描述—.(使用时间感受野与刺激进行卷积来描述)时间感受野一般是听觉计算中使用的,在视觉中,有另一种分析叫做空间感受野(spatial receptive fields)。回归权重(Regression weights)是指在回归分析中用于估计自变量与因变量之间关系的权重或系数。回归分析是一种统计方法,用于建立自变量与因变量之间的关联模型,并通过拟合数据来估计模型中的参数。在简单线性回归中,只有一个自变量与一个因变量之间的关系被建模。

m0_51474171的博客 1603
上一篇: Flex 编程的一些小技巧。不定期增加
下一篇: 收集的一些下载资源
remote_roamer
博客等级 码龄25年 441粉丝 295原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值