file转bitmap
File param = new File();
Bitmap bitmap= BitmapFactory.decodeFile(param.getPath());
drawable转bitmap
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.mipmap.jcss_03 );
url转bitmap
Bitmap bitmap;
public Bitmap returnBitMap(final String url){
new Thread(new Runnable() {
@Override
public void run() {
URL imageurl = null;
try {
imageurl = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection)imageurl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
return bitmap;
}
方法二:
public Bitmap getBitmap(String url) {
Bitmap bm = null;
try {
URL iconUrl = new URL(url);
URLConnection conn = iconUrl.openConnection();
HttpURLConnection http = (HttpURLConnection) conn;
int length = http.getContentLength();
conn.connect();
// 获得图像的字符流
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is, length);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();// 关闭流
}
catch (Exception e) {
e.printStackTrace();
}
return bm;
}
可配合前台线程显示
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case REFRESH_COMPLETE:
myheadimage.setImageBitmap(bitmap);//显示
break;
String imageUrl = "
http://www.pp3.cn/uploads/201511/2015111212.jpg
";
bitmap= returnBitMap(imageUrl);
mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 1000);
bitmap转file
private String SAVE_PIC_PATH = Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)
? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";//
private String SAVE_REAL_PATH = SAVE_PIC_PATH + "/good/savePic";//保存的确
saveFile(bmp, System.currentTimeMillis() + ".png");
//保存方法
private void saveFile(Bitmap bm, String fileName) throws IOException {
String subForder = SAVE_REAL_PATH;
File foder = new File(subForder);
if (!foder.exists()) foder.mkdirs();
File myCaptureFile = new File(subForder, fileName);
Log.e("lgq","图片保持。。。。wwww。。。。"+myCaptureFile);
ends = myCaptureFile.getPath();
if (!myCaptureFile.exists()) myCaptureFile.createNewFile();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
bos.flush();
bos.close();
// ToastUtil.showSuccess(getApplicationContext(), "已保存在/good/savePic目录下", Toast.LENGTH_SHORT);
//发送广播通知系统
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(myCaptureFile);
intent.setData(uri);
this.sendBroadcast(intent);
}
Uri转Bitmap
public static Bitmap decodeUri(Context context, Uri uri, int maxWidth, int maxHeight) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; //只读取图片尺寸
readBitmapScale(context, uri, options);
//计算实际缩放比例
int scale = 1;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
if ((options.outWidth / scale > maxWidth &&
options.outWidth / scale > maxWidth * 1.4) ||
(options.outHeight / scale > maxHeight &&
options.outHeight / scale > maxHeight * 1.4)) {
scale++;
} else {
break;
}
}
options.inSampleSize = scale;
options.inJustDecodeBounds = false;//读取图片内容
options.inPreferredConfig = Bitmap.Config.RGB_565; //根据情况进行修改
Bitmap bitmap = null;
try {
bitmap = readBitmapData(context, uri, options);
} catch (Throwable e) {
e.printStackTrace();
}
return bitmap;
}
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
频繁setImageBitmap引起oom问题解决方法
Glide.with(gsewmimg).load(getCodeBitmap(response.data.skip, R.mipmap.zhifuicon)).into(gsewmimg);
压缩前后。图片大小 2.22MB——>200KB
1、图片压缩方法:
Bitmap bitmap;
byte[] buff;
buff = Bitmap2Bytes(bitmap);
BitmapFactory.Options ontain = new BitmapFactory.Options();
ontain.inSampleSize = 7;//值1为原图。值越大,压缩图片越小1-20
bitmap = BitmapFactory.decodeByteArray(buff, 0, buff.length, ontain);
压缩方法2:
int height = (int) ( mybitmap.getHeight() * (512.0 / mybitmap.getWidth()) );
mybitmap = Bitmap.createScaledBitmap(mybitmap, 512, height, true);
2、bitmap转byte
private byte[] Bitmap2Bytes(Bitmap bm) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}
3、byte转bitmap
private Bitmap Bytes2Bimap(byte[] b) {
if (b.length != 0) {
return BitmapFactory.decodeByteArray(b, 0, b.length);
} else {
return null;
}
方法二,bitmap 转byte
Bitmap frame = mCamera != null ? mCamera.Snapshot(mSelectedChannel) : null;
frame = rotate(frame, 90);
byte[] snapshot = getByteArrayFromBitmap(frame);
if (snapshot!=null){
String imageString = new String(Base64.encode(snapshot,Base64.DEFAULT));
// LgqLogPlus.e("获取到imgstring保存了===== "+imageString);
SharedPreUtil.putString(mDevUID,imageString);
public static byte[] getByteArrayFromBitmap(Bitmap bitmap) {
if (bitmap != null && !bitmap.isRecycled()) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0, bos);
return bos.toByteArray();
} else {
return null;
}
}
byte转bitmap
String imgstring = SharedPreUtil.getString(this,mDevUID);
// LgqLogPlus.e("获取到imgstring==== "+imgstring);
if (imgstring!=null){
byte[] bytsSnapshot = Base64.decode(imgstring.getBytes(), Base64.DEFAULT);
Bitmap snapshot = (bytsSnapshot != null && bytsSnapshot.length > 0) ? getBitmapFromByteArray(bytsSnapshot) : null;
bgimg.setImageBitmap(snapshot);
public static Bitmap getBitmapFromByteArray(byte[] byts) {
InputStream is = new ByteArrayInputStream(byts);
return BitmapFactory.decodeStream(is, null, getBitmapOptions(2));
}
public static BitmapFactory.Options getBitmapOptions(int scale) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true;
options.inInputShareable = true;
options.inSampleSize = scale;
try {
BitmapFactory.Options.class.getField("inNativeAlloc").setBoolean(options, true);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return options;
}
旋转方法:
//Rotate Bitmap
public final static Bitmap rotate(Bitmap b, float degrees) {
if (degrees != 0 && b != null) {
Matrix m = new Matrix();
m.setRotate(degrees, (float) b.getWidth() / 2,
(float) b.getHeight() / 2);
Bitmap b2 = Bitmap.createBitmap(b, 0, 0, b.getWidth(),
b.getHeight(), m, true);
if (b != b2) {
b.recycle();
b = b2;
}
}
return b;
}
调用
bitmap = rotate(bitmap,90);
选图
Android报错:Throwing OutOfMemoryError failed to allocate a 42793710 byte allocation with 52488 free by
在里加上android:hardwareAccelerated="false" 和 android:largeHeap="true"成功解决
Bitmap与String互转
Bitmap frame = BitmapFactory.decodeResource(getResources(),R.mipmap.iv_charge2 );
byte[] snapshot = getByteArrayFromBitmap(frame);
if (snapshot!=null){
String imageString = new String(Base64.encode(snapshot,Base64.DEFAULT));
if (imageString!=null){
byte[] bytsSnapshot = Base64.decode(imageString.getBytes(), Base64.DEFAULT);
Bitmap snapshot2 = (bytsSnapshot != null && bytsSnapshot.length > 0) ? getBitmapFromByteArray(bytsSnapshot) : null;
imageView.setImageBitmap(snapshot2);
}
}
工具:
public static byte[] getByteArrayFromBitmap(Bitmap bitmap) {
if (bitmap != null && !bitmap.isRecycled()) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0, bos);
return bos.toByteArray();
} else {
return null;
}
}
public static Bitmap getBitmapFromByteArray(byte[] byts) {
InputStream is = new ByteArrayInputStream(byts);
return BitmapFactory.decodeStream(is, null, getBitmapOptions(2));
}
public static BitmapFactory.Options getBitmapOptions(int scale) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true;
options.inInputShareable = true;
options.inSampleSize = scale;
try {
BitmapFactory.Options.class.getField("inNativeAlloc").setBoolean(options, true);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return options;
}
private static void readBitmapScale(Context context, Uri uri, BitmapFactory.Options options) {
if (uri == null) {
return;
String scheme = uri.getScheme();
if (ContentResolver.SCHEME_CONTENT.equals(scheme) ||
ContentResolver.SCHEME_FILE.equals(scheme)) {
InputStream stream = null;
try {
stream = context.getContentResolver().openInputStream(uri);
BitmapFactory.decodeStream(stream, null, options);
} catch (Exception e) {
Log.w("readBitmapScale", "Unable to open content: " + uri, e);
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
Log.e("readBitmapScale", "Unable to close content: " + uri, e);
} else if (ContentResolver.SCHEME_ANDROID_RESOURCE.equals(scheme)) {
Log.e("readBitmapScale", "Unable to close content: " + uri);
} else {
Log.e("readBitmapScale", "Unable to close content: " + uri);
}
private static Bitmap readBitmapData(Context context, Uri uri, BitmapFactory.Options options) {
if (uri == null) {
return null;
Bitmap bitmap = null;
String scheme = uri.getScheme();
if (ContentResolver.SCHEME_CONTENT.equals(scheme) ||
ContentResolver.SCHEME_FILE.equals(scheme)) {
InputStream stream = null;
try {
stream = context.getContentResolver().openInputStream(uri);
bitmap = BitmapFactory.decodeStream(stream, null, options);
} catch (Exception e) {
Log.e("readBitmapData", "Unable to open content: " + uri, e);
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
Log.e("readBitmapData", "Unable to close content: " + uri, e);
} else if (ContentResolver.SCHEME_ANDROID_RESOURCE.equals(scheme)) {
Log.e("readBitmapData", "Unable to close content: " + uri);
} else {
Log.e("readBitmapData", "Unable to close content: " + uri);
return bitmap;
redis没有写入权限 redis写入失败怎么办
redis 写入报错1)报错内容 Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots,
but is currently not able to persist on disk.
1.数据结构实验3_C语言_基于单链表的实现、单链表元素的逆序(while + switch + 功能函数)+ 后续规范返回值优化(功能函数不能出现输出语句,只能出现在main函数中)
2.编程初学者入门7_公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。(复习冒泡排序+C、Java中局部变量不赋值不能使用))
3.网络安全学习篇16_OSI与TCP/IP协议簇初步
4.SpringCloud Alibaba Gateway实践与原理分析
5.剑指Offer11_数学、回溯_下一个排列、全排列、全排列||