精华内容
下载资源
问答
  • 获取图片url的后缀

    千次阅读 2018-12-07 10:46:58
    var fname="."+url.split('?')[0].substring(url.split('?')[0].lastIndexOf(".") + 1).toLowerCase();

    var fname="."+url.split('?')[0].substring(url.split('?')[0].lastIndexOf(".") + 1).toLowerCase();

    展开全文
  • android 根据文件Uri获取图片url

    千次阅读 2018-07-12 09:15:32
    今天,简单讲讲android里如何通过文件的Uri获取文件的路径url。昨天,我讲了如何调用手机的文件管理器获取文件资源,但是文件管理器返回的是文件的Uri,我们需要通过Uri获取文件的url才可以操作文件。昨天的博客虽然...

    今天,简单讲讲android里如何通过文件的Uri获取文件的路径url。

    昨天,我讲了如何调用手机的文件管理器获取文件资源,但是文件管理器返回的是文件的Uri,我们需要通过Uri获取文件的url才可以操作文件。昨天的博客虽然写了一种Uri转url的代码,但是我自己也没有很懂,于是在网上查找资料,最终解决了问题。这里记录一下。


    一.简易版处理(实际并没发现有什么问题)

    public static String getRealPathFromURI(Context context, Uri contentURI) {
       String result;
       Cursor cursor = context.getContentResolver().query(contentURI,
             new String[]{MediaStore.Images.ImageColumns.DATA},//
             null, null, null);
       if (cursor == null) result = contentURI.getPath();
       else {
          cursor.moveToFirst();
          int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
          result = cursor.getString(index);
          cursor.close();
       }
       return result;
    }

    简单讲讲,这种代码直接通过Uri使用contentProvider获取数据库的文件的url,网上说android 4.4后这种代码是有问题的,但是我没有测试,大家可以测试看看。


    2.复杂版处理

    public class GetPathFromUri { 
      /** 
       * 专为Android4.4设计的从Uri获取文件绝对路径 
       */
      public static String getPath(final Context context, final Uri uri) { 
        final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; 
        // DocumentProvider 
        if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { 
          // ExternalStorageProvider 
          if (isExternalStorageDocument(uri)) { 
            final String docId = DocumentsContract.getDocumentId(uri); 
            final String[] split = docId.split(":"); 
            final String type = split[0]; 
            if ("primary".equalsIgnoreCase(type)) { 
              return Environment.getExternalStorageDirectory() + "/" + split[1]; 
            } 
          } 
          // DownloadsProvider 
          else if (isDownloadsDocument(uri)) { 
            final String id = DocumentsContract.getDocumentId(uri); 
            final Uri contentUri = ContentUris.withAppendedId( 
                Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); 
            return getDataColumn(context, contentUri, null, null); 
          } 
          // MediaProvider 
          else if (isMediaDocument(uri)) { 
            final String docId = DocumentsContract.getDocumentId(uri); 
            final String[] split = docId.split(":"); 
            final String type = split[0]; 
            Uri contentUri = null; 
            if ("image".equals(type)) { 
              contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
            } else if ("video".equals(type)) { 
              contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 
            } else if ("audio".equals(type)) { 
              contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
            } 
            final String selection = "_id=?"; 
            final String[] selectionArgs = new String[]{split[1]}; 
            return getDataColumn(context, contentUri, selection, selectionArgs); 
          } 
        } 
        // MediaStore (and general) 
        else if ("content".equalsIgnoreCase(uri.getScheme())) { 
          return getDataColumn(context, uri, null, null); 
        } 
        // File 
        else if ("file".equalsIgnoreCase(uri.getScheme())) { 
          return uri.getPath(); 
        } 
        return null; 
      } 
      /** 
       * Get the value of the data column for this Uri. This is useful for 
       * MediaStore Uris, and other file-based ContentProviders. 
       * 
       * @param context    The context. 
       * @param uri      The Uri to query. 
       * @param selection   (Optional) Filter used in the query. 
       * @param selectionArgs (Optional) Selection arguments used in the query. 
       * @return The value of the _data column, which is typically a file path. 
       */
      public static String getDataColumn(Context context, Uri uri, String selection, 
                    String[] selectionArgs) { 
        Cursor cursor = null; 
        final String column = "_data"; 
        final String[] projection = {column}; 
        try { 
          cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, 
              null); 
          if (cursor != null && cursor.moveToFirst()) { 
            final int column_index = cursor.getColumnIndexOrThrow(column); 
            return cursor.getString(column_index); 
          } 
        } finally { 
          if (cursor != null) 
            cursor.close(); 
        } 
        return null; 
      } 
      /** 
       * @param uri The Uri to check. 
       * @return Whether the Uri authority is ExternalStorageProvider. 
       */
      public static boolean isExternalStorageDocument(Uri uri) { 
        return "com.android.externalstorage.documents".equals(uri.getAuthority()); 
      } 
      /** 
       * @param uri The Uri to check. 
       * @return Whether the Uri authority is DownloadsProvider. 
       */
      public static boolean isDownloadsDocument(Uri uri) { 
        return "com.android.providers.downloads.documents".equals(uri.getAuthority()); 
      } 
      /** 
       * @param uri The Uri to check. 
       * @return Whether the Uri authority is MediaProvider. 
       */
      public static boolean isMediaDocument(Uri uri) { 
        return "com.android.providers.media.documents".equals(uri.getAuthority()); 
      } 
    }
    
    简单讲讲,这种代码对android4.4之前和之后做了分别的处理,在android 4.4后又根据url的类型,如ExternalStorageProvider,DownloadsProvider,MediaProvider分别进行处理。具体怎么处理,上面写的很清楚。这个代码比较全面,建议大家使用。


    顺便讲讲url转Uri,这个绝对路径转Uri比较简单

    以绝对路径创建一个File对象,然后调用

    Uri.fromFile(file)


    android 根据文件Uri获取图片url就讲完了。


    就这么简单。

    
    展开全文
  • 2.获取JSON数据的图片地址,在用图片地址去下载图片 3.把下载下来的图片保存在文件里 4.加载到布局上 遗留问题:缓存怎么处理? JSON代码:{"status":1,"img": [ { "id":"1", "imageurl":...

    1.AsyncTask来实现网络的异步加载

    2.获取JSON数据的图片地址,在用图片地址去下载图片

    3.把下载下来的图片保存在文件里

    4.加载到布局上

    遗留问题:缓存怎么处理?


    JSON代码:

    {"status":1,"img":
    	[
    		{
    			"id":"1",
    			"imageurl":"http://192.168.31.152/image/b1.jpg"			
    		},
    		{
    			"id":"2",
    			"imageurl":"http://192.168.31.152/image/b2.jpg"				
    		},
    		{
    			"id":"3",
    			"imageurl":"http://192.168.31.152/image/b3.jpg"			
    		},
    		{
    			"id":"4",
    			"imageurl":"http://h.hiphotos.baidu.com/news/q%3D100/sign=d38d087d5bdf8db1ba2e78643921dddb/9345d688d43f87942b2f41cbd71b0ef41ad53a06.jpg"	
    		},
    	]
    }

    新建一个Bean类用来存储对应的属性

    public class UrlBean {
    
        public String imgUrl;
    
    }

    获取JSON数据的方法,并返回Bean对象

        /**
         * 获取Json数据
         *
         * @return
         */
    
        private List<UrlBean> getJsonData(String url) {
            List<UrlBean> lists = new ArrayList<>();
    
            try {
                String jsonString = readStream(new URL(imgURL).openStream());
                JSONObject jsonObject;
                UrlBean urlBean;
                try {
                    jsonObject = new JSONObject(jsonString);
                    JSONArray jsonArray = jsonObject.getJSONArray("img");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        jsonObject = jsonArray.getJSONObject(i);
                        urlBean = new UrlBean();
                        urlBean.imgUrl = jsonObject.getString("imageurl");
                        lists.add(urlBean);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            return lists;
        }
    
        /**
         * 输入流-字符输入流 返回字符串
         * @param is
         * @return
         */
        private String readStream(InputStream is) {
            InputStreamReader isr;
            String result = "";
            try {
                String line = "";
                isr = new InputStreamReader(is, "utf-8");
                BufferedReader bufferedReader = new BufferedReader(isr);
                while ((line = bufferedReader.readLine()) != null) {
                    result += line;
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }

    用两个异步加载的方法分别读取JSON和循环读取每一张图片(应该又更好的方法把)

        /**
         * 异步加载
         * @return
         */
    
        class MyAsyncTask extends AsyncTask<String, Void, List<UrlBean>> {
    
            @Override
            protected List<UrlBean> doInBackground(String... params) {
                return getJsonData(params[0]);//URL获取JSON数据
            }
    
            @Override
            protected void onPostExecute(List<UrlBean> urlBeans) {
                super.onPostExecute(urlBeans);
                for (int i = 0 ; i<urlBeans.size(); i++) {
                    new MyImageAsyncTask().execute(urlBeans.get(i).imgUrl);
                }
            }
        }
    
        //通过没一个图片的地址请求一次网络得到图片
        class MyImageAsyncTask extends AsyncTask<String, Void, View>{
    
            @Override
            protected View doInBackground(String... params) {
    
                Bitmap bitmap = getBitmapFromURL(params[0]);
                ImageView imageView = getImageView(bitmap);
                return imageView;
            }
    
            @Override
            protected void onPostExecute(View view) {
                super.onPostExecute(view);
                views.add(view);
                if (views.size()>3){
                    setlayoutImage(views);
                }
            }
        };

    通过JSON里的每一个图片的地址,来获取Bitmap对象。在得到输入流时,做了存入SD卡操作

        private File shen;
        private File sdcard;
        private int x;  //笨方法,动态循环更改文件名
        public Bitmap getBitmapFromURL(String urlString){
            Bitmap bitmap;
            InputStream is = null;
            FileOutputStream fos;
            try {
                URL url = new URL(urlString);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                is = new BufferedInputStream(connection.getInputStream());
                bitmap = BitmapFactory.decodeStream(is);
    
                //直接把输入流存到SD卡里
                if (Environment.getExternalStorageState().equals(
                        Environment.MEDIA_MOUNTED)) {
    
                    sdcard = Environment.getExternalStorageDirectory();
                    shen = new File(sdcard, "ss/a" + x + ".jpg");
                    x = x+1;
                    Log.i("ccc",  "ss/"+urlString);
                    fos = new FileOutputStream(shen);
                    byte[] b = new byte[2 * 1024];
                    int len;
                    if (is != null) {
                        while ((len = is.read(b)) != -1) {
                            fos.write(b, 0, len);
                        }
                    }
                    //只做了下载图片,没做缓存,暂时还不知道怎么做
                    //bitmap = BitmapFactory.decodeFile(shen.getAbsolutePath());
                }
    
                connection.disconnect();
                return bitmap;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

    Bitmap 返回 ImageView

       public ImageView getImageView(Bitmap bitmap) {
            ImageView imageView = new ImageView(this);
            imageView.setImageBitmap(bitmap);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            return imageView;
        }

    把图片加载到布局中(这里或许可以不用List对象的 得到一个图加载一个图)

        public void setlayoutImage(List<View> views){
            LinearLayout ll = (LinearLayout) findViewById(R.id.linear);
            for (int i = 0; i<views.size(); i++){
                ll.addView(views.get(i));
            }
        }


    展开全文
  • 通过图片url 获取图片file对象

    千次阅读 2020-08-04 15:50:34
    * 通过图片url 获取图片file对象 * @param url * @param fileName 文件名称(一定要带后缀) * @param callback 回调函数 * @returns {*} */ function getImageFileFromUrl(url, fileName,callback) { var blob...
    /**
     * 通过图片url 获取图片file对象
     * @param url
     * @param fileName 文件名称(一定要带后缀)
     * @param callback 回调函数
     * @returns {*}
     */
    function getImageFileFromUrl(url, fileName,callback) {
        var blob = null;
        var xhr = new XMLHttpRequest(); 
        xhr.open("GET", url);
        xhr.setRequestHeader('Accept', 'image/jpeg');
        xhr.responseType = "blob";
        xhr.onload = () => {
    	if (xhr.status == 200) {
          blob = xhr.response;
          let imgFile = new File([blob], fileName, {type: 'image/jpeg'});
          callback.call(this,imgFile);
        }};
        xhr.send();
    }
    

    demo:(用的图片url是百度上随便搜的)

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
    </head>
    
    <body>
    <img/>
    </body>
    
    <script>
    function getImageFileFromUrl(url, imageName,callback) {
      // imageName一定要带上后缀
        var blob = null;
        var xhr = new XMLHttpRequest(); 
        xhr.open("GET", url);
        xhr.setRequestHeader('Accept', 'image/jpeg');
        xhr.responseType = "blob";
        xhr.onload = () => {
    	if (xhr.status == 200) {
          blob = xhr.response;
          let imgFile = new File([blob], imageName, {type: 'image/jpeg'});
    	  console.log(imgFile)
          callback.call(this,imgFile);
        }};
        xhr.send();
    }
    
    
    
      $(function () {
    	getImageFileFromUrl('https://dss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4085579248,162891217&fm=15&gp=0.jpg','testFile.jpg',function(file){
    		console.log(file)
    		var r = new FileReader()
            r.readAsDataURL(file)
            r.onload = function (e) {
              var base64 = e.target.result;
              $("img").attr('src', base64);         
            }
    
    	});
    
      })
    </script>
    
    </html>
    
    
    展开全文
  • iOS 获取本地图片URL

    千次阅读 2020-04-16 18:26:29
    文件目录内图片URL let path = Bundle.main.path(forResource: 图片名字, ofType: 文件类型) let url = URL(fileURLWithPath: path) assets中的图片 没有找到直接获取url的方法, 但是可以通过先写如到本地,创建一...
  • js 获取图片url的Blob值并预览

    万次阅读 2019-03-09 15:03:05
    js 获取图片url的Blob值并预览 1)使用 XMLHttpRequest 对象获取图片url的Blob值 参考:https://www.cnblogs.com/tujia/p/6483255.html //获取图片的Blob值 function getImageBlob(url, cb) { var xhr = new ...
  • Android通过网络URL获取图片并显示
  • python获取图片url链接后保存到本地

    千次阅读 2019-05-15 11:23:38
    #!/usr/bin/env python # -*- coding:utf-8 -*- import json import time import requests import urllib.request url = 'http://manage.w.rongyi.com/ops/cmd/queryRecord' headers = { "Content-Type":"appli...
  • 获取图片地址url的后缀名

    千次阅读 2019-05-28 15:37:00
    getNameFromLink(url){ if(url.indexOf('.cn/') !== -1){ return (url.split('.')[url.split('.').length - 2] + '.' + url.split('.')[url.split('.').length - 1]).substring(3) }else if(u...
  • Vue由本地js中存放的url地址获取图片

    千次阅读 2020-06-16 12:38:33
    Vue由本地js中存放的url地址获取图片 对象必须放在js中(而不是json里面,json没有require)。如果是在json中,需要采用其他方式去获取 注意:url地址必须用这种形式,有require data.js export const recommends = ...
  • Java通过图片的URL获取图片的宽高

    千次阅读 2019-04-16 14:23:10
    /** ... * 读取远程url图片,得到宽高 * @param imgurl 图片路径 * @return [0] 宽 [1]高 */ public static int[] getImgWH(String imgurl) { boolean b=false; try { //实例化url ...
  • 首先放效果图,简单的做了个UI: 在文本框输入图片的URL,点击“download”就能下载图片。 我是使用新浪的图源:...查看图片URL方式,鼠标右键选择图片,然后点击属性。 可以看到在我的picture文件夹里面成...
  • 获取数据库图片url

    千次阅读 2017-11-21 18:43:56
    * 获取图片url * @param $value * @param $data * @return string */ protected function prefixImgUrl($value,$data) { $finalUrl = $value; if ($data['from'] == 1) { $finalUrl = config
  • 工作中遇到通过图片的url获取图片base64位的需求。一开始是用网上的方法,通过工具类Toolkit,虽然实现的代码比较简短,不过偶尔会遇到图片转成base64位不正确的情况,至今不知道为啥。 之后,又去网上搜了通过获取...
  • 想法:给公众号发送图片 弹出链接自动获取图片url在末尾 大致思路:用户发个图片 然后自动回复这个链接:http://www.zuoyetong.com.cn/imgsearch/edit?pic= (我只会弄到这步 。。) 想问大神的是如何让图片url...
  • springboot通过URL直接获取图片

    万次阅读 2018-07-25 23:58:56
    第一步: spring: resources: 要映射的路径 比如resource下的image文件夹的...映射请求到图片路径下 registry.addResourceHandler("/image/**").addResourceLocations("file:" + SystemAPI.filePath); 注意:S...
  • package com.example.dfefewweeee; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException;...import java.net.URL; im
  • js通过URL快速获取图片宽高的方法

    千次阅读 2018-04-18 16:52:33
    快速获取图片的宽高其实是为了预先做好排版样式布局做准备,...一、简陋的获取图片方式js 代码:// 图片地址 后面加时间戳是为了避免缓存var img_url = 'http://www.qttc.net/static/upload/2013/13643608813441...
  • go 获取远端url图片获取base64编码

    千次阅读 2020-08-18 18:19:03
    package main import ( "encoding/base64" "fmt" "io/ioutil" "net/http" ) func main() { imgUrl := ... //获取远端图片 res, err := http.Get(imgUrl) if err != nil { fm.
  • OSS图片上传和获取外网url

    千次阅读 2019-03-11 16:10:23
    //上传图片,第一个参数为bucketName,第二个参数key为上传的文件路径名称,第三个为InputStream ossClient.putObject(bucketName ,“upload/” +“aa.jpg”, inputStream); Date expiration = new Date(new Date...
  •  $data['img'] = $result['info']['url'];    } catch (OssException $e) {  // print $e->getMessage();  $this->makeLog('uploadByOss', 'ErrorMessage:' . $e->getMessage() . "\r\n");  }  // ...
  • < el - upload class = "upload-demo" ... postURL ...// 获取URL } else { this . $message . error ( '请选择图片文件' ) ; } } , ... } }
  • 通过图片url获取图片数据

    千次阅读 2018-05-23 21:04:47
    //此方法的作用是使下面的方法可以获取https的图片数据private static void trustAllHosts() { try { SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, xtmArray, new java.security....
  • 根据url获取图片的高度和宽度

    千次阅读 2016-11-24 14:22:41
    function imgLoadEvent(callback, url) {//圖片事件加載  var img = new Image();  img.onreadystatechange = function () {  if (this.readyState == "complete") {
  • 后来转变学习思路,从获取数据开始学起,通过查阅文档,逛帖子找资料,学会了如何获取Bmob服务器端的图片数据,并通过获取其url获取图片并以瀑布流得形式显示出来。参考的文章如...
  • ios--根据url获取图片宽高

    千次阅读 2018-05-08 18:41:47
    NSString *urlStr = [data.img objectAtIndex:0];  NSURL *imageUrl = [NSURL URLWithString:urlStr];  NSData *imageData = [NSData dataWithContentsOfURL:imageUrl];  
  • Vant Uploader和axios结合上传图片到后台获取url html代码: <van-uploader :after-read="afterRead" :upload-text="'上传图片'" :before-read="beforeRead" /> 上传js代码: /** * 上传图片之后调用接口 */ ...
  • node 根据图片img url 获取 base64

    千次阅读 2018-11-19 21:35:08
    自己都觉得搞笑的是,之前写前端图片裁剪代码的时候,想解决的问题是如何将canvas裁剪的base64图片转化为file格式上传。而现在考虑的问题是,如何将网络中的图片转化为base64图片格式。 两种写法,思想一摸一样。一...
  • Java后端通过图片URL获取图片并保存

    千次阅读 2020-06-30 15:41:18
    Java后端通过图片URL获取图片并保存 工作中需要同步图片并保存下来,但第三方接口返回结果只能返回图片的绝对路径,于是需要通过url获取图片信息,先通过获取url获取图片的二进制流并转化为base64. public static ...
  • 根据url从服务器获取到原图,保存到缓存中 获取url的输入流 dataInputStream 构造BufferedInputStream来优化读写效率 构造原始图片流 preImage 确定压缩比例 获得原始图片的长宽 width/height ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 390,637
精华内容 156,254
关键字:

怎么获取图片的url