package com.ydl.ydlcommon.utils;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Environment;
import android.util.Base64;
import com.yidianling.common.tools.ToastUtil;

import java.io.*;

public class ImageUtil {

    public static boolean savePicture(Context context, String base64DataStr) {

        // 去掉base64中的前缀
//        String base64Str = base64DataStr.substring(base64DataStr.indexOf(",")+1, base64DataStr.length());
        File appDir = new File(Environment.getExternalStorageDirectory(), "Camera");// 图片保存的文件夹的名称
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String imgName = System.currentTimeMillis() + ".png";
        File fileTest = new File(appDir, imgName);
        byte[] data = Base64.decode(base64DataStr, Base64.DEFAULT);

        for (int i = 0; i < data.length; i++) {
            if (data[i] < 0) {
                data[i] += 256;//调整异常数据
            }
        }
        OutputStream os = null;
        try {
            os = new FileOutputStream(fileTest);
            os.write(data);
            os.flush();
            os.close();

            // 通知系统刷新图库
            updateAlbum(context, fileTest);
            ToastUtil.toastShort("图片已保存至相册");
            return true;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            ToastUtil.toastShort("保存失败");
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            ToastUtil.toastShort("保存失败");
            return false;
        }
    }


    /**
     * 通知图库更新数据
     * context
     * fileName
     * file
     */
    private static void updateAlbum(Context context, File file) {
        // 最后通知图库更新
        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
    }

    public static boolean savePicture(Context context, Bitmap bitmap) {
        if (bitmap == null) {
            return false;
        }
        // 去掉base64中的前缀
//        String base64Str = base64DataStr.substring(base64DataStr.indexOf(",")+1, base64DataStr.length());
        File appDir = new File(Environment.getExternalStorageDirectory(), "Camera");// 图片保存的文件夹的名称
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String imgName = System.currentTimeMillis() + ".png";
        File fileTest = new File(appDir, imgName);

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
        byte[] data = byteArrayOutputStream.toByteArray();

        for (int i = 0; i < data.length; i++) {
            if (data[i] < 0) {
                data[i] += 256;//调整异常数据
            }
        }
        OutputStream os = null;
        try {
            os = new FileOutputStream(fileTest);
            os.write(data);
            os.flush();
            os.close();

            // 通知系统刷新图库
            updateAlbum(context, fileTest);
            ToastUtil.toastShort("图片已保存至相册");
            return true;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            ToastUtil.toastShort("保存失败");
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            ToastUtil.toastShort("保存失败");
            return false;
        }
    }
}