利用base64对图片进行编码及解码

试图将图片通过json进行传输,这个时候就想到利用base64编码的方法来图片。主要步骤有

1、对图片文件进行编码,转换为base64编码的格式,及一长串字符;

2、可将字符通过json进行传送;

3、目的方接收json数组,取出编码字符串,并进行解码,显示图片

该方法难点主要还是在于对图片的编解码处理,以下是用PHP实现的编解码处理代码

<?php
        $image_file = './uploads/14391214729290.jpg';

        //读取图片文件,并转换成base64编码格式
        $image_info = getimagesize($image_file);
        $base64_image_content = "data:{$image_info['mime']};base64," . chunk_split(base64_encode(file_get_contents($image_file)));
        //echo $base64_image_content;

        //将base64字符串解码并保存为原来图片格式
        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
            $type = $result[2];
            $new_file = "./newfile.{$type}";
            if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
                echo '新文件保存成功:', $new_file;
            }

        }
        //显示图片
        <img src="<?php echo $base64_image_content;?>" />
 ?>

其中,

preg_match()

作用:执行一个正则表达式匹配

返回值:返回
pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后 将会停止搜索。如果发生错误preg_match()返回
FALSE

file_put_contents ()

作用:将一个字符串写入文件

返回值:该函数成功将返回写入到文件内数据的字节数,失败时返回 FALSE。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 08:50:30

利用base64对图片进行编码及解码的相关文章

在LoadRunner中进行Base64的编码和解码

<Base64 Encode/Decode for LoadRunner>这篇文章介绍了如何在LoadRunner中对字符串进行Base64的编码和解码: http://ptfrontline.wordpress.com/2009/09/30/base64-encodedecode-for-loadrunner/ 在头文件中封装b64_encode_string和b64_decode_string函数: /*Base 64 Encode and Decode functions for Loa

JavaScript: 详解Base64编码和解码

转载自:http://my.oschina.net/goal/blog/201032#OSC_h2_11 摘要 Base64是最常用的编码之一,比如开发中用于传递参数.现代浏览器中的<img />标签直接通过Base64字符串来渲染图片以及用于邮件中等等.Base64编码在RFC2045中定义,它被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式. JavaScript Base64 Unicode UTF16 UTF8 编码 目录[-] 字符编码

在 Java 中如何进行 BASE64 编码和解码

BASE64 编码是一种常用的字符编码,在很多地方都会用到.JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和解码.下面是本人编的两个小的函数,分别用于 BASE64 的编码和解码: // 将 s 进行 BASE64 编码 public static String getBASE64(String s) { if (s == null) return null; return (new sun.misc.B

java利用Base64编码和解码图片文件

1.编码与解码代码如下所示: import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.image

win api 实现 base64编码、解码

最近在写小玩意,用到了base64编码,但是考虑到体积大小,网上的多种实现都是利用开源的代码,这就增加了其大小.我想win api能不能实现base64编码.解码.通过一通乱搜,还有收获.就有了以下代码 #pragma comment(lib,"crypt32.lib") LPSTR Base64Encode(LPBYTE lpBuffer,DWORD dwLen) { DWORD dwNeed; LPSTR lpBase64Str ; DWORD dwIndex ; DWORD dw

Node利用buffer操作,编码,解码二进制数据

Node利用buffer操作,编码,解码二进制数据 1.创建buffer 用utf-8编码的字符串来创建buffer: var buf = new Buffer('Hello World!'); 你也可以以其他编码的字符串来创建buffer,只要传入第二个传入,即编码类型 var buf = new Buffer('8b76fde713ce', 'base64'); 有三种编码方式可供选择:ascii/utf8/base64 如果你没有任何字符串传入来创建buffer的话,那么你必须要传入一个长

【项目分析】利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码

原文:[项目分析]利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码 最近正在进行项目服务的移植工作,即将JAVA服务的程序移植到DotNet平台中. 在JAVA程序中,有个HTTP请求数据头中,包含一个BASE64编码的字符串,例如: eJyVjMENgDAMA1fpBMjnIkp3ZzZEpAa1PLmXY10sDdqBqr54Ww5AthG7zxJYa0MYr9p7bPFnK/uqjCj06y7JfHwAX3AhhA== 现在需要将这个字符串转化成原始字

base64编码、解码的C语言实现

转自:http://www.cnblogs.com/yejianfei/archive/2013/04/06/3002838.html base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于26=64,所以每6位为一个单位,对应某个可打印字符.三个字节共24位,对应于4个base64单位,即3个字节需要用4个可打印字符来表示.它常用来作为电子邮件的传输编码.在base64中的可打印字符包括大写英文字母A-Z,小写英文字母a-z.阿拉伯数字0-9,这样共有62个字符,此外两个可打印

python中base64编码与解码

引言: 在一些项目中,接口的报文是通过base64加密传输的,所以在进行接口自动化时,需要对所传的参数进行base64编码,对拿到的响应报文进行解码: Base64编码是一种"防君子不防小人"的编码方式.广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有"=",生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合python2中进行Base64编码和解码&g