android服务器获取图片
‘壹’ 怎么让: Android上读取服务器端的图片(服务器从数据库中取图片地址给Android)
第一、图片地址,就是你本地图片地址,服务器要取出数据,总得有个路径吧。图片放到服务器方便访问就行
第二、你在pc上用浏览器咋访问就咋访问呀,就是网络地址
第三、listview的显示网上很多的,我就没有必要跟你多说了
‘贰’ 请问android怎样通过json数据从服务器获取图片
直接获取是不行的,要有一个文件服务器,对于文件服务器会为每个图片生成一个资源路径,然后json数据中返回的就是这个资源路径,最后用URL类就可以通过这个资源路径把图片download下来
‘叁’ Android如何从服务器获取图片
直接获取bitmap对象
//传输网络图片
publicBitmapgetPic(StringuriPic){
URLimageUrl=null;
Bitmapbitmap=null;
try{
imageUrl=newURL(uriPic);
}catch(MalformedURLExceptione){
e.printStackTrace();
}
try{
HttpURLConnectionconn=(HttpURLConnection)imageUrl
.openConnection();
conn.connect();
InputStreamis=conn.getInputStream();
bitmap=BitmapFactory.decodeStream(is);
is.close();
}catch(IOExceptione){
e.printStackTrace();
}
returnbitmap;
}
‘肆’ android如何从服务器取多张图片,在本地保存并显示
//获取connection conn = getURLConnection(url); is = conn.getInputStream(); //获取Bitmap的引用 Bitmap bitmap = BitmapFactory.decodeStream(is) //获取长度 int length = (int) conn.getContentLength(); if (length != -1) { byte[] imgData = new byte[length]; byte[] temp=new byte[512]; int readLen=0; int destPos=0; while((readLen=is.read(temp))>0){ System.array(temp, 0, imgData, destPos, readLen); destPos+=readLen; } bitmap=BitmapFactory.decodeByteArray(imgData, 0, imgData.length); }可能想得不是很完善,你可以参考参考。
‘伍’ android 如何获取远程文件的内所有图片
大家都知道,在android应用中UI线程5秒没响应的话就会抛出无响应异常,对于远程获取大的资源来说,这种异常还是很容易就会抛出来的,那么怎么避免这种问题的产生。在android中提供两种方法来做这件事情:
启动一个新的线程来获取资源,完成后通过Handler机制发送消息,并在UI线程中处理消息,从而达到在异步线程中获取图片,然后通过Handler Message来更新UI线程的过程。
使用android中提供的AsyncTask来完成。
具体的做法这里就不介绍了,查下API就可以了,或者是google、下。这里主要来说本地缓存。
本地缓存
对于图片资源来说,你不可能让应用每次获取的时候都重新到远程去下载(ListView),这样会浪费资源,但是你又不能让所有图片资源都放到内存中去(虽然这样加载会比较快),因为图片资源往往会占用很大的内存空间,容易导致OOM。那么如果下载下来的图片保存到SDCard中,下次直接从SDCard上去获取呢?这也是一种做法,我看了下,还是有不少应用采用这种方式的。采用LRU等一些算法可以保证sdcard被占用的空间只有一小部分,这样既保证了图片的加载、节省了流量、又使SDCard的空间只占用了一小部分。另外一种做法是资源直接保存在内存中,然后设置过期时间和LRU规则。
sdcard保存:
在sdcard上开辟一定的空间,需要先判断sdcard上剩余空间是否足够,如果足够的话就可以开辟一些空间,比如10M
当需要获取图片时,就先从sdcard上的目录中去找,如果找到的话,使用该图片,并更新图片最后被使用的时间。如果找不到,通过URL去download
去服务器端下载图片,如果下载成功了,放入到sdcard上,并使用,如果失败了,应该有重试机制。比如3次。
下载成功后保存到sdcard上,需要先判断10M空间是否已经用完,如果没有用完就保存,如果空间不足就根据LRU规则删除一些最近没有被用户的资源。
关键代码:
保存图片到SD卡上
‘陆’ android 存在数据库中的动态图片,如何读取出来,显示在ImageView中
实现的功能为从服务器获取图片数据,在布局页面上显示。由于图片的个数是不确定的,因此采用在布局页面中定义多个ImageView来显示图片是不合理的。
(一)首先定义布局
android:id="@+id/id_layout_movie"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
(二)加载图片显示时获取到布局文件
RelativeLayout rl_Movie = (RelativeLayout) findViewById(R.id.id_layout_movie);
(三)依次循环服务器获取的图片数据,一张一张设置图片显示的位置
//newWidth为图片显示的宽度,newHeight为图片显示的高度
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams( newWidth, newHeight);
设置lp1.leftMargin和lp1.topMargin的值
(四)最后设置rl_Movie.addView(iv, lp1)将图片加入布局文件中
‘柒’ android 从服务器端获取图片,有的图片太大了,要压缩,但我不知道要压缩到什么样的尺寸合适。
根据你的imageiew大小来定,同时要注意长宽比
如果原图的长宽比大于你的imageiew的长宽比,按长度的比例来缩放
反之按宽度来
如果正好相等,那么哪一个都可以了。
‘捌’ android 网络图片查看器 无法获取服务器上的图片
你直接在手机的浏览器里面输入这个地址也可以显示出这个图片吗?
先怀疑一种可能性:你的手机上网方式不和电脑在一个局域网内部,也就是说不能通过192.168.***来访问你自己服务器上的图片,你可以先换一张公共网络图片的地址来调试。