ios将base64字符串转为图片,点击图片全屏展示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios将base64字符串转为图片,点击图片全屏展示相关的知识,希望对你有一定的参考价值。

参考技术A UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(20, 10, Screen_width-40, 180)];

        // 将base64字符串转为NSData

        NSData *decodeData = [[NSData alloc]initWithBase64EncodedString:[orderInfoDic objectForKey:@"IMAGEURL"] options:(NSDataBase64DecodingIgnoreUnknownCharacters)];

        // 将NSData转为UIImage

        UIImage *decodedImage = [UIImage imageWithData: decodeData];

        imageView.userInteractionEnabled = YES;

        [imageView setImage:decodedImage];

        UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showZoomImageView:)];

        tapGesture.numberOfTapsRequired=1;

        [imageView addGestureRecognizer:tapGesture];

        [cell.contentView addSubview:imageView];

        return cell;

//放大缩小图片

-(void)showZoomImageView:(UITapGestureRecognizer *)tap



    if (![(UIImageView *)tap.view image])

        return;

   

    UIView *bgView = [[UIView alloc] init];

    bgView.frame = [UIScreen mainScreen].bounds;

    bgView.backgroundColor = [UIColor blackColor];

    [[[UIApplication sharedApplication] keyWindow] addSubview:bgView];

    UITapGestureRecognizer *tapBgView = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapBgView:)];

    [bgView addGestureRecognizer:tapBgView];

    //必不可少的一步,如果直接把点击获取的imageView拿来玩的话,返回的时候,原图片就完蛋了

    UIImageView *tempImageView = (UIImageView*)tap.view;

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:tempImageView.frame];

    imageView.image = tempImageView.image;

    [bgView addSubview:imageView];

    [UIView animateWithDuration:0.5 animations:^

        CGRect frame = imageView.frame;

        frame.size.width = bgView.frame.size.width;

        frame.size.height = frame.size.width * (imageView.image.size.height / imageView.image.size.width);

        frame.origin.x = 0;

        frame.origin.y = (bgView.frame.size.height - frame.size.height) * 0.5;

        imageView.frame = frame;

    ];



-(void)tapBgView:(UITapGestureRecognizer *)tapBgRecognizer



    [tapBgRecognizer.view removeFromSuperview];

JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片

网络资源代码

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;


import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

 

/**
* 将网络图片转成Base64码,此方法可以解决解码后图片显示不完整的问题
* @param imgURL图片地址。
* 例如:http://***.com/271025191524034.jpg
* @return
*/
public static String imgBase64(String imgURL) {
ByteArrayOutputStream outPut = new ByteArrayOutputStream();
                byte[] data = new byte[1024];
        try {  
            // 创建URL  
            URL url = new URL(imgURL);  
            // 创建链接  
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
            conn.setRequestMethod("GET");  
            conn.setConnectTimeout(10 * 1000);  

            if(conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
            return "fail";//连接失败/链接失效/图片不存在
            }
            InputStream inStream = conn.getInputStream();  
            int len = -1;
            while ((len = inStream.read(data)) != -1) {
            outPut.write(data, 0, len);
            }
            inStream.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        // 对字节数组Base64编码  
        BASE64Encoder encoder = new BASE64Encoder(); 
        return encoder.encode(outPut.toByteArray()); 
}

本地图片转base64

public static String GetImageStr(String imgFile)
{//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
InputStream in = null;
byte[] data = null;
//读取图片字节数组
try
{
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
//对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);//返回Base64编码过的字节数组字符串
}


Base64解码并生成图片 


public static boolean GenerateImage(String base64str,String savepath)
{ //对字节数组字符串进行Base64解码并生成图片
if (base64str == null) //图像数据为空
return false;
// System.out.println("开始解码");
BASE64Decoder decoder = new BASE64Decoder();
try
{
//Base64解码
byte[] b = decoder.decodeBuffer(base64str);
// System.out.println("解码完成");
for(int i=0;i<b.length;++i)
{
if(b[i]<0)
{//调整异常数据
b[i]+=256;
}
}
// System.out.println("开始生成图片");
//生成jpeg图片
OutputStream out = new FileOutputStream(savepath);
out.write(b);
out.flush();
out.close();
return true;
}
catch (Exception e)
{
return false;
}
}



























































































以上是关于ios将base64字符串转为图片,点击图片全屏展示的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串blob对象在上传

java io流 图片和字符串之间的转换

图片与Base64的转换

微信小程序插入背景图片(将图片转为base64)

使用JS将图片转为Base64

js中图片base64格式转文件对象