`

Base64字符串转换成图片

 
阅读更多

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  

 

分享到:
评论

相关推荐

    c#中 base64字符串与普通字符串互转

    1. 将普通字符串转换为Base64字符串 在C#中,我们可以使用`System.Convert`类的`ToBase64String`方法将普通字符串(UTF-8编码的字节数组)转换为Base64字符串。首先,我们需要将字符串转换为字节数组,然后进行编码...

    Thymeleaf显示base64字符串为图片.docx

    总结来说,要在Thymeleaf中显示Base64字符串为图片,关键在于后台将图片字节数组转成Base64字符串并添加MIME类型标识,然后通过ModelAndView传递给前端;在前端,使用Thymeleaf表达式将字符串插入到`&lt;img&gt;`标签的`...

    base64字符串和图片的相互转换

    在描述的场景中,我们有两个关键操作:将图片转换为Base64字符串,并将Base64字符串还原为图片。 1. **图片转Base64字符串**: 在这个过程中,图片文件(通常为.jpg, .png, .gif等形式)被读取并转化为字节流。...

    图片base64字符串转图片工具代码

    1. **解码字符串**:使用`DecodeString`方法将Base64编码的字符串转换回原始的二进制数据。 2. **创建内存流**:创建一个`TMemoryStream`对象,用于存储解码后的二进制数据。 3. **写入数据**:将解码得到的二进制...

    VB 将二进制图片文件转换为Base64字符串文本.rar

    在这个场景中,我们关注的是如何将二进制图片文件转换为Base64字符串文本,以及如何将这个Base64字符串再还原回图片。这在数据传输、存储或者网页显示等方面非常有用,因为Base64编码可以将二进制数据转换为ASCII...

    VB将二进制图片文件转换为Base64字符串文本

    如果需要从Base64字符串恢复图片,可以使用类似的方法,先使用Convert.FromBase64String将字符串转换回字节数组,然后写入到新的文件中。 在实际应用中,这样的功能可能用于在数据库中存储图片数据,或者在网络请求...

    将图片转成二进制并生成Base64编码字符串,再将二进制转换成各种图片

    例如,`TestImageBinary.java`可能会有一个方法,接受图片路径作为输入,读取图片,将其转换为Base64字符串,然后再反向操作,将Base64字符串转换回图片。 `20090709442.jpg`文件很可能是用来测试上述代码的图片。...

    二维码图片转换成BASE64字符串

    二维码图片转换成BASE64字符串是一项常见的数据处理任务,在IT领域中有着广泛的应用。二维码(Quick Response Code)是一种二维条形码,可以存储大量的文本、网址、名片等信息,而BASE64则是一种用于将二进制数据...

    图片与Base64加密码字符串相互转换工具

    如果是源代码文件,那么它可能包含了实现图片与Base64加密码字符串转换的核心逻辑。 综合以上分析,该工具涉及的技术点包括: 1. 图像处理:读取、显示和保存图片文件,可能使用了如OpenCV、PIL等库。 2. Base64...

    vue项目base64字符串转图片的实现代码

    在Vue项目中,将Base64字符串转换为图片是一种常见的需求,这通常涉及到前端与后端的数据交互。本文将详细讲解如何实现这一功能,并提供相关的Vue代码示例以及后端处理Base64字符串的方法。 首先,让我们从Vue组件...

    C++图片转base64字符串

    本话题聚焦于如何在C++中将图片转换为base64字符串,以适应网络传输的需求。 Base64编码是一种将任意二进制数据转换为ASCII字符集的表示方法,它将3个字节的数据转换成4个可打印的ASCII字符。这样转换后的字符串...

    Java 从网络中读取图片 转换成Base64字符串

    在Java编程中,将网络上的图片读取并转换为Base64字符串是一项常见的任务,尤其在Web开发中,这样的操作可以用于数据传输或者存储。Base64是一种编码方式,能够将二进制数据转化为可打印的ASCII字符,方便在网络上...

    java实现图片转base64字符串 java实现base64字符串转图片

    Java 实现图片转 Base64 字符串和 Base64 字符串转图片是 Java programming 中两个常用的功能,分别用于将图片转换为 Base64 编码的字符串和将 Base64 编码的字符串转换回图片。下面我们将详细介绍这两个功能的实现...

    VB 将二进制图片文件转换为Base64字符串文本

    在VB中,我们可以利用内置的函数和方法来实现二进制图片文件向Base64字符串的转换,这个过程对于在网络上传输图像或者存储在数据库中非常有用。 首先,我们需要理解Base64编码的工作原理。Base64使用64个可打印字符...

    图片转成Base64字符串,供<img/>使用

    将图片转成Base64字符串。供前端Html &lt;img/&gt; 使用 将转换结果替换至src的值就OK了

    Base64转换工具(字符串转换以及图片转换)

    Base64的转换工具,用于普通字符串或者图片转换为Base64或者将base64字符串转换为普通字符串或图片。

    图片 Base64 格式 字符串转换

    标题中的“图片 Base64 格式 字符串转换”涉及到的是计算机编程中的一种常见技术,主要用于在网络上传输图像数据。在Web开发中,有时为了简化HTTP请求或避免跨域问题,我们会选择将图片编码为Base64字符串,然后直接...

    php base64字符串图片jpeg文本文件转换为jpeg图片

    在PHP开发中,有时我们需要处理各种数据类型,其中包括将基于Base64编码的字符串转换成实际的图片文件。Base64是一种用64个字符来表示任意二进制数据的方法,通常用于在网络上传输图像或者在HTML中嵌入图像。在本...

    java生成二维码以及二维码转base64字符串给前端

    在Java开发中,生成二维码和将二维码转换为Base64字符串是常见的需求,尤其是在与前端交互时。这个项目提供了一种方便的方式,通过Maven依赖来实现这些功能,并且包括了一个工具类,使得操作更加简单易用。接下来,...

    将图片toBase64字符串

    这些文件与图片转换成Base64字符串的过程无关,但它们可能是一个Delphi应用程序,该程序实现了上述Base64编码功能。 总之,Base64编码是将二进制数据转化为ASCII字符串的一种方法,特别适用于在网络传输和存储时...

Global site tag (gtag.js) - Google Analytics