请问BitmapFactory无法解码流问题

报错是:
E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: android.graphics.Bitmap@737df77: open failed: ENOENT (No such file or directory)
I/System.out: resolveUri failed on bad bitmap uri: android.graphics.Bitmap@737df77

代码片段
public void newThread(){
if(list != null){
@SuppressLint("HandlerLeak") final
Handler handle = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
if (picByte != null) {
List> listems = new ArrayList>();

                        for (int i = 0; i < list.size(); i++) {
                            Bitmap bitmap = BitmapFactory.decodeByteArray(picbytes.get(i), 0, picbytes.get(i).length);
                            Map<String, Object> listem = new HashMap<String, Object>();
                            listem.put("image", bitmap);
                            listem.put("sname", aname[i]);
                            listem.put("scity", acity[i]);
                            listem.put("sgender", agender[i]);
                            listem.put("sid", aid[i]);
                            listems.add(listem);
                        }

                        SimpleAdapter simplead = new SimpleAdapter(getActivity(), listems,
                                R.layout.pfadapter, new String[]{"image", "sname", "scity", "sgender"},
                                new int[]{R.id.userspic1, R.id.sname, R.id.scity, R.id.sgender});

                        simplead.setViewBinder(new SimpleAdapter.ViewBinder(){
                            public boolean setViewValue(View view,Object data,String textRepresentation){
                                if(view instanceof ImageView && data instanceof Drawable){
                                    CircleImageView iv=(CircleImageView)view;
                                    iv.setImageDrawable((Drawable)data);
                                    return true;
                                }
                                else return false;
                            }
                        });
                        lt1.setAdapter(simplead);
                    }
                        lt1.setOnItemClickListener(new OnItemClickListener() {
                            @SuppressWarnings("unchecked")
                            @Override
                            public void onItemClick (AdapterView < ? > parent, View view,int position, long id) {
                                ListView listView = (ListView) parent;
                                HashMap<String, String> map = (HashMap<String, String>) listView.getItemAtPosition(position);
                                String userid = map.get("sid");
                                String username = map.get("sname");
                                if (FriendshipInfo.getInstance().isFriend(userid)){
                                    ProfileActivity.navToProfile(getActivity(), userid);
                                }else{
                                    Intent person = new Intent(getActivity(),AddFriendActivity.class);
                                    person.putExtra("id",userid);
                                    person.putExtra("name",username);
                                    startActivity(person);

                                }

                            }

                        });

                }
            }
        };

        final Runnable runnable = new Runnable() {
            @Override
            public void run() {
                try {
                    int i;
                    for(i=0; i<list.size(); i++){
                    URL urlpic = new URL(list.get(i));
                    HttpURLConnection conn = (HttpURLConnection)urlpic.openConnection();
                    conn.setRequestMethod("GET");
                    conn.setReadTimeout(10000);

                    if (conn.getResponseCode() == 200) {
                        InputStream fis =  conn.getInputStream();
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        byte[] bytes = new byte[1024];
                        int length = -1;
                        while ((length = fis.read(bytes)) != -1) {
                            bos.write(bytes, 0, length);
                        }
                        picByte = bos.toByteArray();
                        picbytes.add(picByte);
                        bos.close();
                        fis.close();

                    }
                    }
                    Message message = new Message();
                    message.what = 1;
                    handle.sendMessage(message);

                }catch (IOException e) {
                    e.printStackTrace();
                }

            }
        };
        new Thread(runnable).start();
    }
}

2个回答

路径错了,打开卡看路径是不是对的,或者有没有文件读写权限

debug一下看看 或者Log

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
利用BitmapFactory.decodeByteArray对网络图片解析失败

请各路大神帮帮忙!! 目前在实现一个ANDROID APP,需要获取后台图片并对齐解析并在客户端进行展示。我获得的图片资源格式为byte[],这是已确定的,因此我采用的方法大致是: byte[] b = getBytesFromXX(); Bitmap bitmap = BitmapFactory.decodeByteArray(b,0,b.length); 大致的思路如上面,在debug的时候发现b里面是有东西的,但是执行完BitmapFactory.decodeByteArray这个函数后得到的结果为空。 所以想请教各位大神朋友们上面问题的原因和解决方案,多谢各位了!!!

用BitmapFactory的decodeByteArray方法解析图片问题

Bitmap bitmap = BitmapFactory.decodeByteArray(result, 0, result.length); 在调用decodeByteArray这个方法之前我输出过byte[ ]的长度, result.length = 161472 为什么我保存生成的图片之后导出来看,发现图片长度是478844,大小468KB 保存图片我用的是bitmap.compress(Bitmap.CompressFormat.PNG, 70, out)

android中调用BitmapFactory.decodeResource()生成位图对象的问题

调用BitmapFactory.decodeResource()生成位图对象 //BitmapFactory.decodeResource()这里的BitmapFactory是一个类还是一个对象呢,如何判断呢?

BitmapFactory.decodeStream崩溃,在某些64bit机型上加载JEPG

自从上架Google Play需要支持64位cpu之后,就开始出现这个问题。 代码只是简单地调用 **BitmapFactory.decodeStream** ,崩溃的位置根据日志看是出现在**libjpeg.so**或者**libqc-opt.so**(根据手机底层实现不同)。并且只是jpg的图片有异常,将图片转为png后则运行正常。 相关崩溃日志: ``` 1 #00 pc 0000000000018914 /system/lib64/libjpeg.so [arm64-v8a] 2 #01 pc 000000000001fef4 /system/lib64/libjpeg.so [arm64-v8a] 3 #02 pc 0000000000017188 /system/lib64/libjpeg.so (jpeg_read_scanlines+152) [arm64-v8a] 4 #03 pc 00000000002484e4 /system/lib64/libskia.so (SkJPEGImageDecoder::onDecode(SkStream*, SkBitmap*, SkImageDecoder::Mode)+4532) [arm64-v8a] 5 #04 pc 000000000023d9b4 /system/lib64/libskia.so (SkImageDecoder::decode(SkStream*, SkBitmap*, SkColorType, SkImageDecoder::Mode)+152) [arm64-v8a] 6 #05 pc 00000000000c7b48 /system/lib64/libandroid_runtime.so (android::NativeInputEventSender::NativeInputEventSender(_JNIEnv*, _jobject*, android::sp<android::InputChannel> const&, android::sp<android::MessageQueue> const&)+136) [arm64-v8a] 7 #06 pc 00000000000c857c /system/lib64/libandroid_runtime.so (android::NativeInputEventSender::receiveFinishedSignals(_JNIEnv*)+48) [arm64-v8a] 8 #07 pc 0000000000f647f8 /system/framework/arm64/boot.oat (oatdata+16136184) [arm64-v8a] 9 java: 10 android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:677) 11 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:653) ``` ![图片说明](https://user-images.githubusercontent.com/4463732/62694270-955d4a80-ba06-11e9-8384-816e42c53719.png) ![图片说明](https://user-images.githubusercontent.com/4463732/62694278-99896800-ba06-11e9-9740-c7a477a240ed.png) ![图片说明](https://user-images.githubusercontent.com/4463732/62694282-9b532b80-ba06-11e9-94a9-fa3f2e3200b4.png) 肉眼可见OPPO手机是重灾区,有什么方法可以避开这个bug吗?

BitmapFactory.decodeResource()我空指针异常

用bitmapfactory.decoderesource把drawable图片转换成bitmap 怎么最后成空的了

BitmapFactory.decodeStream返回bitmap为null

图片下载的时候,response转化为inputstream,经过二次采样后再调用BitmapFactory.decodeStream(mInputStream, null, mop)返回bitmap为null

BitmapFactory.decodeByteArray为空,求大神解惑

``` String stra = d.getResult().getImage(); try { byte[] data=null; data = stra.getBytes("UTF-8"); // 为UTF8编码 // 把二进制图片转成位图 Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,null); image.setImageBitmap(bitmap); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } ``` data中有数据,bitmap为空,求解

BitmapFactory.decodeByteArray中各个参数的的含义

BitmapFactory.decodeByteArray(byte[] data,int offset,int length,Options opts) byte[] data: int offset: int length: Options opts: 求各项参数的含义! 新手刚学,望高手指点,不胜感激!

Java - 另一个“BitmapFactory.decodeByteArray始终为null”

<div class="post-text" itemprop="text"> <p>I have an image stored in the database in this form</p> <pre><code>"/9j/4AAQSkZJRgABAQAAAQABAAD/2w &lt;...&gt; igD//2Q==" </code></pre> <p>so definitely base64 encoded.</p> <p>I get it via a php function:</p> <pre><code>... $query = $db-&gt;prepare("SELECT `Data` FROM `UserPicture` WHERE `UserId` = ?"); $query-&gt;bind_param('i', $id); $query-&gt;execute(); $query-&gt;bind_result($data); $query-&gt;fetch(); echo base64_encode($data); </code></pre> <p>Android gets it via a call:</p> <pre><code>StringBuffer result = m_dbi.getResult(Constants.SERVER_HOST_PHP + "/get_user_picture.php", params, "GET"); </code></pre> <p>Debugging I've seen that <em>result</em> is correct.</p> <p>I pass <em>result.toString()</em> to a writeImageToFile(String pic) that does:</p> <pre><code>... byte[] decodedByte = Base64.decode(pic, Base64.DEFAULT); Bitmap bm = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); ... </code></pre> <p><em>pic</em> is correct as well as <em>decodedByte.length</em> but <strong><em>bm</em></strong> <strong>is always null</strong>.</p> <p>I've tried to change <em>Base64.DEFAULT</em> to <em>NO_PADDING</em> or <em>NO_WRAP</em> but always null.</p> <p>What could be the reason ?</p> </div>

BitmapFactory与BitmapDecoder的区别

BitmapFactory与BitmapDecoder的区别,两个详细解释下,

当在bitmap 中存储时DecodeStream抛出空值

使用下面的代码,我在`imageBitmap = BitmapFactory.decodeStream(is2,null, options);`处获取异常 NULL。 先前运行时,可以解码,但是现在为什么不行了呢?decodeStream 抛出 null吗? public void showImageThumb(FileInputStream is) { final int IMAGE_MAX_SIZE = 100; FileInputStream is2 = is; BitmapFactory.Options options=new BitmapFactory.Options(); options.inSampleSize = 4; Bitmap imageBitmap = BitmapFactory.decodeStream(is,null, options); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int height = options.outHeight; int width = options.outWidth; int scale = 1; if ( height > IMAGE_MAX_SIZE || width > IMAGE_MAX_SIZE) { scale = (int)Math.pow(2, (int) Math.round(Math.log(IMAGE_MAX_SIZE / (double) Math.max(options.outHeight, options.outWidth)) / Math.log(0.5))); } try { is.close(); } catch (IOException e) { e.printStackTrace(); } options = new BitmapFactory.Options(); options.inSampleSize = scale*2; imageBitmap = BitmapFactory.decodeStream(is2,null, options); height = options.outHeight; width = options.outWidth; imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); //ERROR HERE imageSelectedThumb = baos.toByteArray();

当向Bitmap对象加载图片时,出现奇怪内存不够问题。

我不确定从哪开始解释这个问题。 在每一行,我有一个带着一对图片按钮的列表视图。当你点击列表行,它加载一个新的控件。因为照相机布局的问题我不得不建立我新的tab。这个控件加载完成的结果是一个地图。如果我点击我的按钮来加载图片预览(从SD卡加载一个图片)应用程序从这个控件返回到列表视图控件,导致结果处理器重新加载我的新的控件,那个不过就是一个图像的小部件。 所以这就是问题,图片显示在列表视图的时候都是带着光标和列表转换器的。这使得它相当的简单,但是我不确定我怎么能够调整大小(IE下有一点小,但是不是像素的关心)图片作为图片按钮的源文件在起作用。所以我只是调整了来自于手机、相机的照片的大小。 这个问题就是当它试图返回重新加载第二个控件的时候出现了内存不足的问题。 我的问题:是否有方法让我可以逐行创建列表转换器,那样我可以调整在运行中的图片的大小(按位)?这将是合适的,因为我还需要给每一行的小工具/元素做一些属性的改变,为了我不能在触摸屏的编辑选择有焦点的一行(我可以使用滚动条)。 我知道我可以做一个不同频道信号传输来改变图片大小,并保存我的图片,但是这真的不是我想要做的,但是如果你能够给一些建议的示例代码那将是很好的。 我是这样做的 String[] from = new String[] { DBHelper.KEY_BUSINESSNAME, DBHelper.KEY_ADDRESS, DBHelper.KEY_CITY, DBHelper.KEY_GPSLONG, DBHelper.KEY_GPSLAT, DBHelper.KEY_IMAGEFILENAME + ""}; to = new int[] { R.id.businessname, R.id.address, R.id.city, R.id.gpslong, R.id.gpslat, R.id.imagefilename }; notes = new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to); setListAdapter(notes); Where R.id.imagefilename is a ButtonImage R.id.imagefilename是一个按钮图片 这是我的日志 09-13 05:05:49.877: ERROR/dalvikvm-heap(3896): 6291456-byte external allocation too large for this process. 09-13 05:05:49.877: ERROR/(3896): VM wont let us allocate 6291456 bytes 09-13 05:05:49.877: ERROR/AndroidRuntime(3896): Uncaught handler: thread main exiting due to uncaught exception 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:304) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:149) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:174) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.graphics.drawable.Drawable.createFromPath(Drawable.java:729) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.ImageView.resolveUri(ImageView.java:484) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.ImageView.setImageURI(ImageView.java:281) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.SimpleCursorAdapter.setViewImage(SimpleCursorAdapter.java:183) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:129) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.CursorAdapter.getView(CursorAdapter.java:150) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.AbsListView.obtainView(AbsListView.java:1057) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.ListView.makeAndAddView(ListView.java:1616) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.ListView.fillSpecific(ListView.java:1177) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.ListView.layoutChildren(ListView.java:1454) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.AbsListView.onLayout(AbsListView.java:937) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.view.View.layout(View.java:5611) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1108) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.LinearLayout.onLayout(LinearLayout.java:922) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.view.View.layout(View.java:5611) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.FrameLayout.onLayout(FrameLayout.java:294) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.view.View.layout(View.java:5611) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:999) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.LinearLayout.onLayout(LinearLayout.java:920) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.view.View.layout(View.java:5611) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.widget.FrameLayout.onLayout(FrameLayout.java:294) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.view.View.layout(View.java:5611) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.view.ViewRoot.performTraversals(ViewRoot.java:771) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.view.ViewRoot.handleMessage(ViewRoot.java:1103) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.os.Handler.dispatchMessage(Handler.java:88) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.os.Looper.loop(Looper.java:123) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at android.app.ActivityThread.main(ActivityThread.java:3742) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at java.lang.reflect.Method.invokeNative(Native Method) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at java.lang.reflect.Method.invoke(Method.java:515) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497) 09-13 05:05:49.917: ERROR/AndroidRuntime(3896): at dalvik.system.NativeStart.main(Native Method) 09-13 05:10:01.127: ERROR/AndroidRuntime(3943): ERROR: thread attach failed 当显示一个图片的时候我又有了一个新问题 09-13 22:13:18.594: DEBUG/skia(4204): xxxxxxxxxxx jpeg error 20 Improper call to JPEG library in state %d 09-13 22:13:18.604: INFO/System.out(4204): resolveUri failed on bad bitmap uri: 09-13 22:13:18.694: ERROR/dalvikvm-heap(4204): 6291456-byte external allocation too large for this process. 09-13 22:13:18.694: ERROR/(4204): VM won't let us allocate 6291456 bytes 09-13 22:13:18.694: DEBUG/skia(4204): xxxxxxxxxxxxxxxxxxxx allocPixelRef failed

关于Base64转换成Bitmap的问题,每次转换Bitmap都是空

在网上查了一下这个方法可以把base64转换成Bitmap, public static Bitmap stringToBitmap(String string) { byte[] bytes = Base64.decode(string, Base64.DEFAULT); Bitmap bitmap=BitmapFactory.decodeByteArray(bytes, 0, bytes.length); return bitmap; } 可是我每次转换的bitmap值都是空,而我把参数string放在在线base64转图片里面是可以成功生成图片的,麻烦大家帮帮看看这个问题怎么解决?

Android imageview setImageBitmap没反应

``` bitmap= BitmapFactory.decodeFile(filename); Log.d("main", bitmap.getPixel(25,35)+""); myImageView.setImageBitmap(bitmap); ``` log已经打印出信息了,bitmap读入应该没有问题吧?(我把图片直接放在res下也试了,一样不行) Log也不显示错误,就像传入的是null一样(先显示另一张再试着显示这张会让之前那张不显示) 其他图片没有问题。 这张图片只有 六百KB ,但是很长 ,是这个原因么?怎么解决? 其他图片没有问题 但是这张图片也不大,主要是很长 请问Android文档里讲图片长、宽影响显示了么?

关于Bitmap压缩缓存的问题

关于Bitmap压缩的问题 本人刚入门新手一枚。今天在练习bitmap内存缓存和本地缓存。 使用到Bitmapfactory.Options 的时候遇到了一点问题, 在Options设置之后无法获取到bitmap。 代码如下: private Bitmap downloadBitmap(String imageUrl) { HttpURLConnection conn = null; try { URL url = new URL(imageUrl); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5 * 1000); conn.setReadTimeout(5 * 1000); if (conn.getResponseCode() == 200) { //Bitmap bitmap = BitmapFactory.decodeStream(conn.getInputStream()); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeStream(conn.getInputStream(), null, options); options.inSampleSize = calculateInSampleSize(options, PixelUtils.dip2px(context, 200), PixelUtils.dip2px(context, 250)); options.inPreferredConfig = Config.RGB_565; options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeStream(conn.getInputStream(), null,options); if (bitmap != null) { return bitmap; } } } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); } } return null; } } 而不用options直接加载就可以成功获取.上断代码注释的那一行。 在网上也看了一些文章,没发现什么问题,但Bitmap始终返回null(options.inJustDecodeBounds = false之后), 研究了一下午还是没解决,特来请教 求大神不吝赐教,感激不尽。

bitmap关于回收发生oom内存溢出

我放在adapter,getView方法里去加载图片 BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 4; bit[position] = BitmapFactory.decodeFile(uri, options); iv.setImageBitmap(bit[position]); 这个怎么回收不会发生内存溢出,求教大神,我是菜鸟

安卓,DiskLruChche,不能存取到bitmap的内容,求指教

布局就只有一个imageview,不贴了. 以下是mainactivity,只贴有关的部分,avd是安卓6.0 ``` public class MainActivity extends AppCompatActivity { ImageView imageView; File file; //cache的位置 DiskLruCache mDiskLruCache; DiskLruCache.Editor editor; URL imgurl; HttpURLConnection con; OutputStream editorOutput; //editor的输出流 InputStream in; //从网络获取的输入流 DiskLruCache.Snapshot snapshot; Bitmap bitmap; Handler handler; //子线程已获取到bitmap时发消息给主线程 class MyHandler extends Handler { public void handleMessage(Message msg) { switch(msg.arg1) { case 1: imageView.setImageBitmap(bitmap); Log.e("this","已接受到消息"); } } } //计算md5 public String hashKeyForDisk(String key) { String cacheKey; try { final MessageDigest mDigest = MessageDigest.getInstance("MD5"); mDigest.update(key.getBytes()); cacheKey = bytesToHexString(mDigest.digest()); } catch (NoSuchAlgorithmException e) { cacheKey = String.valueOf(key.hashCode()); } return cacheKey; } private String bytesToHexString(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(0xFF & bytes[i]); if (hex.length() == 1) { sb.append('0'); } sb.append(hex); } return sb.toString(); } class myThread extends Thread { public void run() { // String path = getExternalCacheDir().getPath(); String path=Environment.getExternalStorageDirectory().getPath(); file = new File(path + "/mytest"); if (!file.exists()) file.mkdirs(); try { mDiskLruCache = DiskLruCache.open(file, 1, 1, 50 * 1024 * 1024); String url = "http://v1.qzone.cc/skin/201310/08/17/19/5253ce06a29c2425.jpg%21600x600.jpg"; String key = hashKeyForDisk(url); editor = mDiskLruCache.edit(key); editorOutput = editor.newOutputStream(0); //从网络获取数据流 imgurl = new URL(url); con = (HttpURLConnection) imgurl.openConnection(); in = con.getInputStream(); int b; //把输入流写到editor的输出流 while ((b = in.read()) != 0) editorOutput.write(b); editorOutput.flush(); con.disconnect(); editor.commit(); mDiskLruCache.flush(); //从缓存中读取bitmap snapshot = mDiskLruCache.get(key); if (snapshot != null) { FileInputStream is = (FileInputStream) snapshot.getInputStream(0); bitmap = BitmapFactory.decodeStream(is); Message msg = handler.obtainMessage(); msg.arg1 = 1; handler.sendMessage(msg); } else { Log.e("this", "snapshot为空"); } } catch (Exception e) { Log.e("this", e.toString()); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); int REQUEST_EXTERNAL_STORAGE=1; String[] PERMISSIONS_STORAGE={Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); Log.e("this", "已拿到权限"); handler=new MyHandler(); imageView = (ImageView) MainActivity.this.findViewById(R.id.imageview); Thread thread=new myThread(); thread.start(); } } ``` 下面再贴贴manifest中的权限 ``` <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> ``` 代码如上,运行效果如下 ![图片说明](https://img-ask.csdn.net/upload/201606/05/1465093832_457065.png) ![图片说明](https://img-ask.csdn.net/upload/201606/05/1465093847_460165.png) ![图片说明](https://img-ask.csdn.net/upload/201606/05/1465093856_830524.png) 我试过直接从网络获取的流中直接获取bitmap是可以的,而这样先用DiskLruCache存了再取回来就不行,求大神指点指点

图片放大之后,无法通过手势滑动查看完整图片~~

如题! 我的代码是: Bitmap bm = BitmapFactory.decodeFile(filePath); Matrix matrix = new Matrix(); matrix.postScale((float)1,(float)1); Bitmap resizeBmp = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true); imageView.setImageBitmap(resizeBmp); 这样图片放大之后只能看到手机屏幕大小的那一部分图片,其他地方看不到,手势滑动也没效果。请问这个问题应该怎么解决。

关于安卓Bitmap,怎样写一个缩放图片的方法?

@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.editnote); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_edit); setSupportActionBar(toolbar); EditText editText = (EditText)findViewById(R.id.edit_content); String imagePath = getIntent().getBundleExtra("neirong").getString( "nei"); SpannableString ss = new SpannableString(imagePath); Pattern p=Pattern.compile("/mnt/sdcard/.+?\\.\\w{3}"); Matcher m=p.matcher(imagePath); while(m.find()){ Bitmap bm = BitmapFactory.decodeFile(m.group()); Bitmap rbm = resizeImage(bm, 100, 100); ImageSpan span = new ImageSpan(this, rbm); ss.setSpan(span, m.start(), m.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } editText.setText(ss); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); InitView(); } 对应如上代码,resizeImage方法该怎么写?

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

Windows版YOLOv4目标检测实战:训练自己的数据集

课程演示环境:Windows10; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV3.4 需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:训练自己的数据集》 课程链接:https://edu.csdn.net/course/detail/28745 YOLOv4来了!速度和精度双提升! 与 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒帧率)分别提高了 10% 和 12%。 YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用labelImg标注和使用YOLOv4训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv4使用AlexyAB/darknet,在Windows系统上做项目演示。包括:安装软件环境、安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算)和先验框聚类分析。还将介绍改善YOLOv4目标检测性能的技巧。 除本课程《Windows版YOLOv4目标检测实战:训练自己的数据集》外,本人将推出有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》 《Windows版YOLOv4目标检测实战:中国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

Java调用微信支付

Java 使用微信支付 一. 准备工作 1.

汽车租赁管理系统需求分析规格说明书

汽车租赁管理系统需求分析规格说明书,这只是一个模板,如果有不会的可以借鉴一下,还是蛮详细的。。。。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

程序员的算法通关课:知己知彼(第一季)

【超实用课程内容】 程序员对于算法一直又爱又恨!特别是在求职面试时,算法类问题绝对是不可逃避的提问点!本门课程作为算法面试系列的第一季,会从“知己知彼”的角度,聊聊关于算法面试的那些事~ 【哪些人适合学习这门课程?】 求职中的开发者,对于面试算法阶段缺少经验 想了解实际工作中算法相关知识 在职程序员,算法基础薄弱,急需充电 【超人气讲师】 孙秀洋&nbsp;| 服务器端工程师 硕士毕业于哈工大计算机科学与技术专业,ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27272 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Java62数据提取代码

利用苹果手机微信下面的wx.data文件提取出62数据,通过62可以实现不同设备直接登陆,可以通过文件流的方式用脚本上传到服务器进行解析

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

Lena图像处理测试专业用图,高清完整全身原图

Lena图像处理测试专业用图,高清完整全身原图,该图片很好的包含了平坦区域、阴影和纹理等细节,这些都有益于测试各种不同的图像处理算法。它是一幅很好的测试照片!其次,由于这是一个非常有魅力女人的照片。

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

verilog实现地铁系统售票

使用 verilog 实现地铁售票

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问