精华内容
下载资源
问答
  • Android如何获取网络图片
  • 关于安卓如何获取网络图片的问题,网上有一些代码,但是这些代码大多不能用,出现各种问题;现在把我写的代码贡献出来,和大家一起交流。本代码实现的是点击按钮,将网络图片加载到安卓的Imageview控件上,本人亲试...

            关于安卓如何获取网络图片的问题,网上有一些代码,但是这些代码大多不能用,出现各种问题;现在把我写的代码贡献出来,和大家一起交流。本代码实现的是点击按钮,将网络图片加载到安卓的Imageview控件上,本人亲试通过。

            首先是打开网络权限:在AndroidManifest.xml文件中写入 <uses-permission android:name="android.permission.INTERNET"/>,然后就是所用的代码:

    xml文件:

           <ImageView
             android:id="@+id/imageview"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             />
           <Button
             android:id="@+id/button"
             android:layout_height="wrap_content"
             android:layout_width="fill_parent"
             android:text="获取网络图片"
             />

    activity类:

    package com.example.imageviewtest;
    //获取网络图片的方法
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;

    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Looper;
    import android.os.Message;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.Drawable;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.Toast;

    public class MainActivity extends Activity {
     private ImageView getImageview;
     private Button getButton;
     private final String IMAGE_URL="http://img.hen2.com/201509/source_img/150_G_1442562155435.jpg";//这里是存放网络图片的路径


     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
       getButton = (Button) findViewById(R.id.button);
       getImageview = (ImageView) findViewById(R.id.imageview);
       getButton.setOnClickListener(new View.OnClickListener() { 
       @Override
       public void onClick(View v) {
            new Thread(runa).start();
       }
      });
     }
     
    // 获取网络图片
     public void setView(String path) {
        String picturepath = path;
        byte[] data = null;
        try {
         data = getImage(picturepath);
         Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
         Looper.prepare();
         Message msg = new Message();
         msg.what = 0;
         msg.obj = bitmap;
         handler.sendMessage(msg);
        } catch (Exception e) {
         Toast.makeText(getApplicationContext(), "获取图片错误", 1).show();
        }
       }
     
    //定义一个handler给imageview绑定图片
       private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
         if (msg.what == 0) {
          getImageview.setImageBitmap((Bitmap) msg.obj);
         }
        }
       };
     
    //定义一个Runnable,调用获取网络图片的方法
       private Runnable runa = new Runnable() {
        @Override
        public void run() {
         setView(IMAGE_URL);
        }
       };
      
       // 获取网络图片的数据
       public static byte[] getImage(String picturepath) throws Exception {
                   URL url = new URL(picturepath);
                   HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 基于http协议的连接对象
                   conn.setConnectTimeout(10000);// 10秒(源码有问题,把10(10毫秒)改为了10000(10秒)现在正确了)
                   conn.setRequestMethod("GET");// 大写
                  if (conn.getResponseCode() == 200) {
                    InputStream ins = conn.getInputStream();
                     return read(ins);
                    }
                   return null;
              }
       

     //流工具
         public static byte[] read(InputStream ins) throws Exception {
               ByteArrayOutputStream outstream = new ByteArrayOutputStream();
               byte[] buffer = new byte[1024];
               int length = 0;
               while ((length = ins.read(buffer)) > -1) {
                 outstream.write(buffer, 0, length);
               }
               outstream.close();
              return outstream.toByteArray();
           }
       
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
     }

    }

    展开全文
  • macOS SwiftUI 网络编程之如何获取网络图片并高性能展示 解决SPM慢问题 解决SPM慢的问题 本项目我们将使用SDWebImage和SDWebImageSwiftUI项目,由于SPM拉取github太慢了,我们可以将相关项目拉入到csdn上面来,下面...

    实战需求

    macOS SwiftUI 网络编程之如何获取网络图片并高性能展示 解决SPM慢问题

    解决方案一

    git config --global http.proxy “http://127.0.0.1:10818” 
    git config --global https.proxy “http://127.0.0.1:10818”
    

    取消配置

    git config --global --unset http.proxy
    git config --global --unset https.proxy
    

    ssh (可以不配置)

    修改~/.ssh/config文件(不存在则新建):

    Host github.com
       HostName github.com
       User git
       # 走 HTTP 代理
       # ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=8080
       # 走 socks5 代理)
       # ProxyCommand nc -v -x 127.0.0.1:1080 %h %p
    

    解决方案二 解决SPM慢的问题

    本项目我们将使用SDWebImage和SDWebImageSwiftUI项目,由于SPM拉取github太慢了,我们可以将相关项目拉入到csdn上面来,下面就是项目git地址,大家可以把他们添加到项目中。

    https://codechina.csdn.net/iCloudEnd/SDWebImage.git
    https://codechina.csdn.net/iCloudEnd/SDWebImageSwiftUI.git
    

    1、添加了Swift Packages
    截屏2021-01-12 下午12.42.16.png

    2、将地址添加地址栏
    截屏2021-01-12 下午1.08.11.png

    3、添加成功
    截屏2021-01-12 下午1.09.08.png

    安装成功

    看完本文后,您将能够作出下面的界面

    截屏2021-01-12 下午1.31.03.png

    截屏2021-01-12 下午1.30.53.png

    Jietu20210112-133207.gif


    实战代码

    import SwiftUI
    import SDWebImageSwiftUI
    
    struct ContentView: View {
        var columns = Array(repeating: GridItem(.flexible(), spacing: 15), count: 4)
        
        @StateObject var imageData = ImageViewModel()
        @State var search = ""
        var body: some View {
            NavigationView{
                List{
                    Label("plus",systemImage:"plus")
                    Label("book",systemImage:"book")
                    Label("folder",systemImage:"folder")
                }
                VStack{
                    
                    HStack(spacing: 12){
                        
                        // Search Bar
                        
                        HStack(spacing: 15){
                            
                            Image(systemName: "magnifyingglass")
                                .foregroundColor(.gray)
                            
                            TextField("Search", text: $search)
                                .textFieldStyle(PlainTextFieldStyle())
                        }
                        .padding(.vertical,10)
                        .padding(.horizontal)
                        .background(BlurWindow())
                        .cornerRadius(10)
                        
                        Button(action: {}, label: {
                            
                            Image(systemName: "slider.vertical.3")
                                .foregroundColor(.black)
                                .padding(10)
                                .background(Color.white)
                                .cornerRadius(10)
                                .shadow(color: Color.black.opacity(0.1), radius: 5, x: 5, y: 5)
                                .shadow(color: Color.black.opacity(0.1), radius: 5, x: -5, y: -5)
                        })
                        .buttonStyle(PlainButtonStyle())
                        
                        Button(action: {}, label: {
                            
                            Image(systemName: "plus")
                                .foregroundColor(.white)
                                .padding(10)
                                .background(Color.black)
                                .cornerRadius(10)
                        })
                        .buttonStyle(PlainButtonStyle())
                    }
                    .padding()
                    // ScrollView With Images....
                    
                    GeometryReader {reader in
                        ScrollView{
                            
                            LazyVGrid(columns: columns,spacing: 15 ,content: {
                                
                                // Getting Images.....
                                
                                ForEach(imageData.images.indices,id: \.self){index in
                                    
                                    ZStack {
                                        
                                        WebImage(url: URL(string: imageData.images[index].download_url)!)
                                            .placeholder(content: {
                                                
                                                ProgressView()
                                            })
                                            .resizable()
                                            .aspectRatio(contentMode: .fill)
                                            .frame(width: (reader.frame(in: .global).width - 45) / 4, height: 150)
                                            .cornerRadius(15)
                                        
                                        Color.black.opacity(imageData.images[index].onHover ?? false ? 0.2 : 0)
                                            .cornerRadius(15)
                                        
                                        VStack{
                                            
                                            HStack{
                                                
                                                Spacer(minLength: 0)
                                                
                                                Button(action: {}, label: {
                                                    
                                                    Image(systemName: "hand.thumbsup.fill")
                                                        .foregroundColor(.yellow)
                                                        .padding(8)
                                                        .background(Color.white)
                                                        .cornerRadius(10)
                                                })
                                                .buttonStyle(PlainButtonStyle())
                                                
                                                Button(action: {saveImage(index: index)}, label: {
                                                    
                                                    Image(systemName: "folder.fill")
                                                        .foregroundColor(.blue)
                                                        .padding(8)
                                                        .background(Color.white)
                                                        .cornerRadius(10)
                                                })
                                                .buttonStyle(PlainButtonStyle())
                                            }
                                            .padding(10)
                                            
                                            Spacer()
                                        }
                                        .opacity(imageData.images[index].onHover ?? false ? 1 : 0)
                                    }
                                    // Hover...
                                    .onHover(perform: { hovering in
                                        
                                        withAnimation{
                                            
                                            imageData.images[index].onHover = hovering
                                        }
                                    }
                                    )}
                            })
                            .padding(.vertical)
                        }
                    }
                    
                    Spacer()
                }
                .ignoresSafeArea(.all, edges: .all)
                .frame(minWidth:600,minHeight: 400)
            }
        }
        
        func saveImage(index: Int){
            
            // getting Image data From Url....
            
            let manager = SDWebImageDownloader(config: .default)
            
            manager.downloadImage(with: URL(string: imageData.images[index].download_url)!) { (image, _, _, _) in
                
                guard let imageoriginal = image else{return}
                
                let data = imageoriginal.sd_imageData(as: .JPEG)
                
                
                // Saving Image...
                
                let pannel = NSSavePanel()
                pannel.canCreateDirectories = true
                pannel.nameFieldStringValue = "\(imageData.images[index].id).jpg"
                
                pannel.begin { (response) in
                    
                    if response.rawValue == NSApplication.ModalResponse.OK.rawValue{
                        
                        // saving Image...
                        
                        do{
                            
                            try data?.write(to: pannel.url!, options: .atomicWrite)
                            
                            print("success")
                        }
                        catch{
                            print(error.localizedDescription)
                        }
                    }
                }
            }
        }
    }
    

    项目完整源码

    链接:https://pan.baidu.com/s/1-gAFFU7ilSmfBz5pEtYfOA 密码:gz3q

    加入我们一起学习SwiftUI

    QQ:3365059189
    SwiftUI技术交流QQ群:518696470
    教程网站:www.swiftuigit.com

    展开全文
  • ios如何获取图片(二)无沙盒下 解决问题 *解决问题1:tableView滑动卡顿,图片延时加载 解决方法:添加异步请求,在子线程里请求网络,在主线程刷新UI *解决问题2:反复请求网络图片,增加用户流量消耗 解决方法:...

    ios如何获取图片(二)无沙盒下

    解决问题

    *解决问题1:tableView滑动卡顿,图片延时加载
    解决方法:添加异步请求,在子线程里请求网络,在主线程刷新UI

    *解决问题2:反复请求网络图片,增加用户流量消耗
    解决方法:创建了downloadImage,downloadImage属于数据源,当tableview滚动的时候就可以给cell的数据赋值,运用了MVC设计方式

    *解决问题3:当没有请求到图片时,留白影响用户体验,图片还会延时刷新
    解决方法:添加默认图片

    *解决问题4:当该cell的网络请求未执行完,又滚动到了该cell,会导致网络请求重复
    解决方法:创建网络请求缓冲池

    *解决问题5:当出现数量较多的图片时,防止内存使用过多,耦合性大
    解决方法:创建图片缓冲池

    代码如下图

        - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        SXTShopCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    
        SXTShop * shop = self.dataList[indexPath.row];
    
        cell.shop = shop;
    
        //为了避免重复加载的问题,创建了downloadImage,downloadImage属于数据源,当tableview滚动的时候就可以给cell的数据赋值
    
        //从图片缓冲池里找到对应的图片
        if ([self.imageCache objectForKey:shop.shop_image]) {
        
        //如果下载过,直接从内存中获取图片
        cell.iconView.image = shop.downloadImage;
        cell.iconView.image = self.imageCache[shop.shop_image];
        
         } else {
        
            //设置默认图片
            cell.iconView.image = [UIImage imageNamed:@"defaultImage"];
        
            [self downloadImage:indexPath];
     
         }
    
    return cell;
    }
    
    - (void)downloadImage:(NSIndexPath *)indexPath {
    
        SXTShop * shop = self.dataList[indexPath.row];
    
        if ([self.operationDict objectForKey:shop.shop_image]) {
        
            NSLog(@"已经请求过了,请等待下载");
        
        } else {
            
        
            //如果未下载过,开启异步线程
            NSBlockOperation * op = [NSBlockOperation blockOperationWithBlock:^{
            
                //模拟网络延时
                [NSThread sleepForTimeInterval:1];
            
            //通过url获取网络数据
                NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString                  stringWithFormat:@"%@%@",baseUrl,shop.shop_image]]];
            
                //将数据装换为图片
                UIImage * image = [UIImage imageWithData:data];
            
                //如果有图片
                if (image) {
                
                    //通知model,将图片赋值给downloadImage,以便下次从内存获取
                    //                    shop.downloadImage = image;
                
                    //将图片作为value,将url作为key
                   [self.imageCache setObject:image forKey:shop.shop_image];
                
                //获取主队列,更新UI
                    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                    
                    //刷新第indexPath单元的表格
                    [self.tableView reloadRowsAtIndexPaths:@[indexPath]         withRowAnimation:UITableViewRowAnimationNone];
                    
                }];
            }
        }];
        
        //将请求加入操作缓冲池中
        [self.operationDict setObject:op forKey:shop.shop_image];
        
        //将请求加入全局队列
        [self.queue addOperation:op];
        }
    
    
    }

    //当内存发生警报时,调用
    - (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

        [self.imageCache removeAllObjects];
        [self.operationDict removeAllObjects];
    
        [self.queue cancelAllOperations];
    }

    转载于:https://www.cnblogs.com/ldnh/p/5285185.html

    展开全文
  •  //通过url获取网络数据  NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",baseUrl,shop.shop_image]]];    //将数据装换为图片  UIImage * image = ...

    static NSString * baseUrl = @"http://192.168.1.123/images/";

     

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
       
        SXTShopCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier];
       
        SXTShop * shop = self.dataList[indexPath.row];
       
        cell.shop = shop;
       
        //为了避免重复加载的问题,创建了downloadImage,downloadImage属于数据源,当tableview滚动的时候就可以给cell的数据赋值
       
        if (shop.downloadImage) {
           
            //如果下载过,直接从内存中获取图片
            cell.iconView.image = shop.downloadImage;
           
        } else {
          
            //设置默认图片
            cell.iconView.image = [UIImage imageNamed:@"defaultImage"];
           
            //如果未下载过,开启异步线程
            NSBlockOperation * op = [NSBlockOperation blockOperationWithBlock:^{
               
                //模拟网络延时
                [NSThread sleepForTimeInterval:1];
               
                //通过url获取网络数据
                NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",baseUrl,shop.shop_image]]];
               
                //将数据装换为图片
                UIImage * image = [UIImage imageWithData:data];
               
                //如果有图片
                if (image) {
                   
                    //通知model,将图片赋值给downloadImage,以便下次从内存获取
                    shop.downloadImage = image;

                    //获取主队列,更新UI
                    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                       
                        //刷新第indexPath单元的表格
                        [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
                   
                    }];
                }
            }];
            //将请求加入全局队列
            [self.queue addOperation:op];
           
        }

        return cell;
    }
     

     

    转载于:https://www.cnblogs.com/ldnh/p/5281449.html

    展开全文
  • 由于业务逻辑的需求,需要桌面程序能够获取网络资源。 假设有网络图片 http://172.7.43.111/serviceonline/icons/Face/0.gif,如何获取该资源并在 RichTextBox 中显示?
  • //通过url获取网络数据 NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",baseUrl,shop.shop_image]]]; //将数据装换为图片 UIImage * image = ...
  • Android 如何根据网络地址获取网络图片方法
  • 原文地址:Android中如何根据图片url路径来获取网络图片 1、根据图片的URL路径来获取网络图片,核心代码如下: public static Bitmap getBitmap(String path) throws IOException{ URL url = new URL(path); ...
  • 微信小程序如何获取本地图片网络地址 ~~ 要想获取本地图片网络地址,首先得要上传到网络 一般的网络上传比如QQ空间 上传后右键图片获取其网络地址即可,但是小程序端可能会报错,大家可以试一试 还有一种上传就是...
  • 如何网络获取一张图片,并显示出来?? 首先应想到若要从网络资源中获取图片,就需要通过流操作,于是就想到如何创建流。 第一步:指定图片资源的URL 第二步:通过RUL获取一个connection 第三步:通过连接获取...
  • 获取网络上的图片,首先得有网络的访问权限,这个不再写了,以前的文章中写过,还有布局方式不再写了,就是写也是一个简单的布局,没有多大意义,直接上核心代码: 这是本人使用的一个简单的类,来获取网上的图片...
  • 创业不易,企业管理更是千头万绪,稍有不慎,就会陷入困境。本公号由专业律师、会计师、税务师共同倾力打造,免费为企业家及企业管理人员...本公众号于8月3日发布《企业微信公众号注意,你使用的图片可能涉及侵权...
  • android中获取网络图片

    2012-08-19 22:38:22
    本主要介绍在android如何获取网络图片的方法,其源代码如下: packagecom.demo.lc; importjava.io.ByteArrayOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.net....
  • 本文主要介绍如何获取网络图片,主要有以下两种方式:
  • 获取网络图片

    2015-01-19 19:18:00
     现在让我们考虑一下,如何动态获取网络图片呢?首先既然是动态,就必须一个服务器作为支撑,在这里我使用jsp搭建了一个服务器,具体做法如下:  MyEclipse和Tomcate的配置就不再这里赘述,相关的配置方法,度娘...
  • 在项目开发的时候,有可能会有这样的一种需求:有一段视频需要展示给用户,在界面上先展示视频上的某一帧图片,用户...获取网络视频第一帧图片代码: /** * 服务器返回url,通过url去获取视频的第一帧 * Android
  • 2.使用HttpURLConnection获取对应图片IO流 URL url = new URL(string); HttpURLConnection connection = (HttpURLConnection) url.openConnection();//得到连接 connection.setConnectTimeout(3000);//设置...
  • python如何获取网络上的图片并将其保存在本地

    万次阅读 多人点赞 2017-08-01 19:04:27
    之前写爬虫大多是爬网页中的url,然后将url保存下来就可以了,倒还没有想过要获取真的图片到本地。网络上有很多方法,但是很多都是本地,或者其他,亲测了两种方法:方法一,使用urllib.urlretrieve(),之前其实偶尔...
  • 在写项目时,要显示从相机获取图片,比如将它显示在一个UIImageView上,但是由于相机有横屏与竖屏拍摄,导致图片的尺寸,长宽比都是不一定的 如果直接把不合适的图片塞到UIImageView里,图片会变形,强行适应frame...
  • 当我们cell需要展示图片,根据图片...但是后来不知道咋滴服务器不在返回图片的宽高了,沟通几次无果,只好自己来想办法来获取图片宽高了,在网上随搜了一下 方法如下: +(CGSize)getImageSizeWithURL:(id)imageURL ...
  • 请教,如何获取网络链接的图片? 网络路径如下: https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHb8ToAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL1EweDEyR2psU29ZelFZN1VER0EtAAIEutmPUwMEAAAAAA== ...
  • 首先,我们要知道图片这种文件,不能以我们印象中那些基本数据类型来定义或是以这些类型从网络获取图片。 所以我们需要用到二进制(计算机的世界就是一个二进制的世界啊。。。)数据类型。
  • UIImage如何网络获取图片

    千次阅读 2013-01-05 14:12:03
    NSURL *url = [NSURL URLWithString: @...// 获取图片地址 UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]]; // 根据地址取出图片 imageView.image
  • /* * 获取网上的图片 */ public class ImageTools { public static Bitmap getIcon(String path) { Bitmap bitmap = null; try { URL url = new URL(path);//创建URL连接 URLConn

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,166
精华内容 466
关键字:

如何获取网络图片