我是靠谱客的博主 虚拟鞋子,这篇文章主要介绍Android 将图片网址url转化为bitmap,drawable转bitmap,file转bitmap,bitmap转file,Bitmap转String,Uri转Bitmap,现在分享给大家,希望可以做个参考。
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);
}
if(mbitmap != null){
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.Q){
saveImage29(mbitmap);
}else{
if ( saveImage(file, mbitmap)){
LgqLogPlus.e("路径---3-- "+file);
//发送广播通知系统
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File(file));
intent.setData(uri);
this.sendBroadcast(intent);
}
}
}
/**
* API29 中的最新保存图片到相册的方法
*/
private void saveImage29(Bitmap toBitmap) {
//开始一个新的进程执行保存图片的操作
Uri insertUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
//使用use可以自动关闭流
try {
OutputStream outputStream = getContentResolver().openOutputStream(insertUri, "rw");
if (toBitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream)) {
Log.e("保存成功", "success");
} else {
Log.e("保存失败", "fail");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
//统一方法将图片Bitmap保存在文件中
public static boolean saveImageToFile(Context mContext,String fileName, Bitmap frame) {
if (fileName == null || fileName.length() <= 0)
return false;
if (frame == null || frame.getByteCount() <= 0)
return false;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
frame.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
int options = 100;
while (baos.toByteArray().length / 1024 > 100) { //循环判断如果压缩后图片是否大于100kb,大于继续压缩
baos.reset();//重置baos即清空baos
//第一个参数 :图片格式 ,第二个参数: 图片质量,100为最高,0为最差 ,第三个参数:保存压缩后的数据的流
frame.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中
options -= 10;//每次都减少10
}
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//把ByteArrayInputStream数据生成图片
if(bitmap!=null){
// AppLog.Loge("压缩后图片大小为:"+bitmap.getByteCount() + "---路径:"+fileName);
saveBitmap(bitmap,fileName);
}
return true;
}
public static void saveBitmap(Bitmap bitmap,String path) {
new Thread(new Runnable() {
@Override
public void run() {
String savePath;
File filePic;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
savePath = path;
} else {
// AppLog.Loge( "saveBitmap failure : sdcard not mounted");
return;
}
try {
filePic = new File(savePath);
if (!filePic.exists()) {
filePic.getParentFile().mkdirs();
filePic.createNewFile();
}
FileOutputStream fos = new FileOutputStream(filePic);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
// AppLog.Loge( "保存图片失败 saveBitmap: " + e.getMessage());
return;
}
// AppLog.Loge( "saveBitmap success: " + filePic.getAbsolutePath());
}
}).start();
}
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;
}
bitmap与byte[]之间相互转换
Android 图片压缩,bitmap与byte[]之间相互转换,Bitmap转String:Android 图片压缩,Bitmap旋转,bitmap与byte[]之间相互转换,Bitmap与String互转_meixi_android的博客-CSDN博客_android mipmap转bitmap
bug在线交流:扣Q 1085220040
最后
以上就是虚拟鞋子最近收集整理的关于Android 将图片网址url转化为bitmap,drawable转bitmap,file转bitmap,bitmap转file,Bitmap转String,Uri转Bitmap的全部内容,更多相关Android内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复