Android:
public Bitmap stringtoBitmap(String string){
//将字符串转换成Bitmap类型
Bitmap bitmap=null;
try {
byte[]bitmapArray;
bitmapArray=Base64.decode(string, Base64.DEFAULT);
bitmap=BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
public String bitmaptoString(Bitmap bitmap){
//将Bitmap转换成字符串
String string=null;
ByteArrayOutputStream bStream=new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG,100,bStream);
byte[]bytes=bStream.toByteArray();
string=Base64.encodeToString(bytes,Base64.DEFAULT);
return string;
}
IOS:
UIImage图片转成base64字符串:
UIImage *_originImage = [UIImage imageNamed:@"full_playlist_hl.png"];
NSData *_data = UIImageJPEGRepresentation(_image, 1.0f);
NSString *_encodedImageStr = [_data base64Encoding]; (ios7)
NSLog(@"===Encoded image:\n%@", _encodedImageStr);
Base64字符串转UIImage图片:
NSData *_decodedImageData = [[NSData alloc] initWithBase64Encoding:
_encodedImageStr]; (ios7)
UIImage *_decodedImage = [UIImage imageWithData:_decodedImageData];
NSLog(@"===Decoded image size: %@", NSStringFromCGSize(_decodedImage.size));
CommonFunc.h
//
// CommonFunc.h
// PRJ_base64
//
// Created by wangzhipeng on 12-11-29.
// Copyright (c) 2012年 com.comsoft. All rights reserved.
//
#import <Foundation/Foundation.h>
#define __BASE64( text ) [CommonFunc base64StringFromText:text]
#define __TEXT( base64 ) [CommonFunc textFromBase64String:base64]
@interface CommonFunc : NSObject
/******************************************************************************
函数名称 : + (NSString *)base64StringFromText:(NSString *)text
函数描述 : 将文本转换为base64格式字符串
输入参数 : (NSString *)text 文本
输出参数 : N/A
返回参数 : (NSString *) base64格式字符串
备注信息 :
******************************************************************************/
+ (NSString *)base64StringFromText:(NSString *)text;
/******************************************************************************
函数名称 : + (NSString *)textFromBase64String:(NSString *)base64
函数描述 : 将base64格式字符串转换为文本
输入参数 : (NSString *)base64 base64格式字符串
输出参数 : N/A
返回参数 : (NSString *) 文本
备注信息 :
******************************************************************************/
+ (NSString *)textFromBase64String:(NSString *)base64;
@end
CommonFunc.m
//
// CommonFunc.m
// PRJ_base64
//
// Created by wangzhipeng on 12-11-29.
// Copyright (c) 2012年 com.comsoft. All rights reserved.
//
#import "CommonFunc.h"
//引入IOS自带密码库
#import <CommonCrypto/CommonCryptor.h>
//空字符串
#define LocalStr_None @""
static const char encodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@implementation CommonFunc
+ (NSString *)base64StringFromText:(NSString *)text
{
if (text && ![text isEqualToString:LocalStr_None]) {
//取项目的bundleIdentifier作为KEY 改动了此处
//NSString *key = [[NSBundle mainBundle] bundleIdentifier];
NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding];
//IOS 自带DES加密 Begin 改动了此处
//data = [self DESEncrypt:data WithKey:key];
//IOS 自带DES加密 End
return [self base64EncodedStringFrom:data];
}
else {
return LocalStr_None;
}
}
+ (NSString *)textFromBase64String:(NSString *)base64
{
if (base64 && ![base64 isEqualToString:LocalStr_None]) {
//取项目的bundleIdentifier作为KEY 改动了此处
//NSString *key = [[NSBundle mainBundle] bundleIdentifier];
NSData *data = [self dataWithBase64EncodedString:base64];
//IOS 自带DES解密 Begin 改动了此处
//data = [self DESDecrypt:data WithKey:key];
//IOS 自带DES加密 End
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
else {
return LocalStr_None;
}
}
/******************************************************************************
函数名称 : + (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key
函数描述 : 文本数据进行DES加密
输入参数 : (NSData *)data
(NSString *)key
输出参数 : N/A
返回参数 : (NSData *)
备注信息 : 此函数不可用于过长文本
******************************************************************************/
+ (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key
{
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [data length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr, kCCBlockSizeDES,
NULL,
[data bytes], dataLength,
buffer, bufferSize,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
/******************************************************************************
函数名称 : + (NSData *)DESEncrypt:(NSData *)data WithKey:(NSString *)key
函数描述 : 文本数据进行DES解密
输入参数 : (NSData *)data
(NSString *)key
输出参数 : N/A
返回参数 : (NSData *)
备注信息 : 此函数不可用于过长文本
******************************************************************************/
+ (NSData *)DESDecrypt:(NSData *)data WithKey:(NSString *)key
{
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [data length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr, kCCBlockSizeDES,
NULL,
[data bytes], dataLength,
buffer, bufferSize,
&numBytesDecrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer);
return nil;
}
/******************************************************************************
函数名称 : + (NSData *)dataWithBase64EncodedString:(NSString *)string
函数描述 : base64格式字符串转换为文本数据
输入参数 : (NSString *)string
输出参数 : N/A
返回参数 : (NSData *)
备注信息 :
******************************************************************************/
+ (NSData *)dataWithBase64EncodedString:(NSString *)string
{
if (string == nil)
[NSException raise:NSInvalidArgumentException format:nil];
if ([string length] == 0)
return [NSData data];
static char *decodingTable = NULL;
if (decodingTable == NULL)
{
decodingTable = malloc(256);
if (decodingTable == NULL)
return nil;
memset(decodingTable, CHAR_MAX, 256);
NSUInteger i;
for (i = 0; i < 64; i++)
decodingTable[(short)encodingTable[i]] = i;
}
const char *characters = [string cStringUsingEncoding:NSASCIIStringEncoding];
if (characters == NULL) // Not an ASCII string!
return nil;
char *bytes = malloc((([string length] + 3) / 4) * 3);
if (bytes == NULL)
return nil;
NSUInteger length = 0;
NSUInteger i = 0;
while (YES)
{
char buffer[4];
short bufferLength;
for (bufferLength = 0; bufferLength < 4; i++)
{
if (characters[i] == '\0')
break;
if (isspace(characters[i]) || characters[i] == '=')
continue;
buffer[bufferLength] = decodingTable[(short)characters[i]];
if (buffer[bufferLength++] == CHAR_MAX) // Illegal character!
{
free(bytes);
return nil;
}
}
if (bufferLength == 0)
break;
if (bufferLength == 1) // At least two characters are needed to produce one byte!
{
free(bytes);
return nil;
}
// Decode the characters in the buffer to bytes.
bytes[length++] = (buffer[0] << 2) | (buffer[1] >> 4);
if (bufferLength > 2)
bytes[length++] = (buffer[1] << 4) | (buffer[2] >> 2);
if (bufferLength > 3)
bytes[length++] = (buffer[2] << 6) | buffer[3];
}
bytes = realloc(bytes, length);
return [NSData dataWithBytesNoCopy:bytes length:length];
}
/******************************************************************************
函数名称 : + (NSString *)base64EncodedStringFrom:(NSData *)data
函数描述 : 文本数据转换为base64格式字符串
输入参数 : (NSData *)data
输出参数 : N/A
返回参数 : (NSString *)
备注信息 :
******************************************************************************/
+ (NSString *)base64EncodedStringFrom:(NSData *)data
{
if ([data length] == 0)
return @"";
char *characters = malloc((([data length] + 2) / 3) * 4);
if (characters == NULL)
return nil;
NSUInteger length = 0;
NSUInteger i = 0;
while (i < [data length])
{
char buffer[3] = {0,0,0};
short bufferLength = 0;
while (bufferLength < 3 && i < [data length])
buffer[bufferLength++] = ((char *)[data bytes])[i++];
// Encode the bytes in the buffer to four characters, including padding "=" characters if necessary.
characters[length++] = encodingTable[(buffer[0] & 0xFC) >> 2];
characters[length++] = encodingTable[((buffer[0] & 0x03) << 4) | ((buffer[1] & 0xF0) >> 4)];
if (bufferLength > 1)
characters[length++] = encodingTable[((buffer[1] & 0x0F) << 2) | ((buffer[2] & 0xC0) >> 6)];
else characters[length++] = '=';
if (bufferLength > 2)
characters[length++] = encodingTable[buffer[2] & 0x3F];
else characters[length++] = '=';
}
return [[NSString alloc] initWithBytesNoCopy:characters length:length encoding:NSASCIIStringEncoding freeWhenDone:YES];
}
@end
分享到:
相关推荐
1. 将普通字符串转换为Base64字符串 在C#中,我们可以使用`System.Convert`类的`ToBase64String`方法将普通字符串(UTF-8编码的字节数组)转换为Base64字符串。首先,我们需要将字符串转换为字节数组,然后进行编码...
总结来说,要在Thymeleaf中显示Base64字符串为图片,关键在于后台将图片字节数组转成Base64字符串并添加MIME类型标识,然后通过ModelAndView传递给前端;在前端,使用Thymeleaf表达式将字符串插入到`<img>`标签的`...
在描述的场景中,我们有两个关键操作:将图片转换为Base64字符串,并将Base64字符串还原为图片。 1. **图片转Base64字符串**: 在这个过程中,图片文件(通常为.jpg, .png, .gif等形式)被读取并转化为字节流。...
1. **解码字符串**:使用`DecodeString`方法将Base64编码的字符串转换回原始的二进制数据。 2. **创建内存流**:创建一个`TMemoryStream`对象,用于存储解码后的二进制数据。 3. **写入数据**:将解码得到的二进制...
在这个场景中,我们关注的是如何将二进制图片文件转换为Base64字符串文本,以及如何将这个Base64字符串再还原回图片。这在数据传输、存储或者网页显示等方面非常有用,因为Base64编码可以将二进制数据转换为ASCII...
如果需要从Base64字符串恢复图片,可以使用类似的方法,先使用Convert.FromBase64String将字符串转换回字节数组,然后写入到新的文件中。 在实际应用中,这样的功能可能用于在数据库中存储图片数据,或者在网络请求...
例如,`TestImageBinary.java`可能会有一个方法,接受图片路径作为输入,读取图片,将其转换为Base64字符串,然后再反向操作,将Base64字符串转换回图片。 `20090709442.jpg`文件很可能是用来测试上述代码的图片。...
二维码图片转换成BASE64字符串是一项常见的数据处理任务,在IT领域中有着广泛的应用。二维码(Quick Response Code)是一种二维条形码,可以存储大量的文本、网址、名片等信息,而BASE64则是一种用于将二进制数据...
如果是源代码文件,那么它可能包含了实现图片与Base64加密码字符串转换的核心逻辑。 综合以上分析,该工具涉及的技术点包括: 1. 图像处理:读取、显示和保存图片文件,可能使用了如OpenCV、PIL等库。 2. Base64...
在Vue项目中,将Base64字符串转换为图片是一种常见的需求,这通常涉及到前端与后端的数据交互。本文将详细讲解如何实现这一功能,并提供相关的Vue代码示例以及后端处理Base64字符串的方法。 首先,让我们从Vue组件...
本话题聚焦于如何在C++中将图片转换为base64字符串,以适应网络传输的需求。 Base64编码是一种将任意二进制数据转换为ASCII字符集的表示方法,它将3个字节的数据转换成4个可打印的ASCII字符。这样转换后的字符串...
在Java编程中,将网络上的图片读取并转换为Base64字符串是一项常见的任务,尤其在Web开发中,这样的操作可以用于数据传输或者存储。Base64是一种编码方式,能够将二进制数据转化为可打印的ASCII字符,方便在网络上...
Java 实现图片转 Base64 字符串和 Base64 字符串转图片是 Java programming 中两个常用的功能,分别用于将图片转换为 Base64 编码的字符串和将 Base64 编码的字符串转换回图片。下面我们将详细介绍这两个功能的实现...
在VB中,我们可以利用内置的函数和方法来实现二进制图片文件向Base64字符串的转换,这个过程对于在网络上传输图像或者存储在数据库中非常有用。 首先,我们需要理解Base64编码的工作原理。Base64使用64个可打印字符...
将图片转成Base64字符串。供前端Html <img/> 使用 将转换结果替换至src的值就OK了
Base64的转换工具,用于普通字符串或者图片转换为Base64或者将base64字符串转换为普通字符串或图片。
标题中的“图片 Base64 格式 字符串转换”涉及到的是计算机编程中的一种常见技术,主要用于在网络上传输图像数据。在Web开发中,有时为了简化HTTP请求或避免跨域问题,我们会选择将图片编码为Base64字符串,然后直接...
在PHP开发中,有时我们需要处理各种数据类型,其中包括将基于Base64编码的字符串转换成实际的图片文件。Base64是一种用64个字符来表示任意二进制数据的方法,通常用于在网络上传输图像或者在HTML中嵌入图像。在本...
在Java开发中,生成二维码和将二维码转换为Base64字符串是常见的需求,尤其是在与前端交互时。这个项目提供了一种方便的方式,通过Maven依赖来实现这些功能,并且包括了一个工具类,使得操作更加简单易用。接下来,...
这些文件与图片转换成Base64字符串的过程无关,但它们可能是一个Delphi应用程序,该程序实现了上述Base64编码功能。 总之,Base64编码是将二进制数据转化为ASCII字符串的一种方法,特别适用于在网络传输和存储时...