通常在开发Android显示网络图片时,通常会遇到因手机屏幕大小的不同,显示图片变形的问题。所以我们在显示图片时通过获取图片的大小,再计算出控件应该显示的大小,这样图片显示不会出现拉伸的问题。以下就是怎样获取网络图片大小的方法,希望能帮助大家!
// 定义一个网页图片的路径
String url = ”http://www.kksdapp.com/data/upload/552730a23a335.jpg“;
// 根据图片地址获取图片输出流方法
// 注:使用该方法时要在异步类中调用该方法
public static InputStream getInputStream(Context context, String path){
InputStream inputStream = null;
HttpURLConnection httpURLConnection = null;
String bitmapUrl = null;
bitmapUrl = path;
try {
URL url = new URL(bitmapUrl);
if(!StringUtil.isNull(url.toString())){
httpURLConnection = (HttpURLConnection) url.openConnection();
// 设置连接网络的超时时间
httpURLConnection.setConnectTimeout(5000);
// 打开输入流
httpURLConnection.setDoInput(true);
// 设置本次Http请求使用的方法
httpURLConnection.setRequestMethod("GET");
if (200 == httpURLConnection.getResponseCode()){
// 从服务器获得一个输入流
inputStream = httpURLConnection.getInputStream();
}else{
Log.v("inputStream", url+"_链接失败");
}
}
} catch (Exception e) {
Log.w("url", e.toString());
e.printStackTrace();
}
return inputStream;
}
// 页面启动异步类调用上面的方法,并将获得的图片输出流转化成bitmap格式,再获取图片的大小
public static Integer[] getIntentPicSize(final Context context, final String url){
final Integer[] size = new Integer[2];
new AsyncTask<Void, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(Void... params) {
System.out.println("url : " + url);
InputStream is = DownloadBitmap.getInputStream(context, url);
if (is != null) {
return BitmapFactory.decodeStream(is);
} else {
eturn null;
}
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if (bitmap == null) {
bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.member_home_bg);
}
size[0] = bitmap.getWidth();
size[1] = bitmap.getHeight();
System.out.println("bitmap.getWidth() : " + bitmap.getWidth());
System.out.println("bitmap.getHeight() : " + bitmap.getHeight());
super.onPostExecute(bitmap);
}
}.execute();
return size;
}
相关推荐
然而,这个大小包含了所有数据,包括可能的编码信息,不是直接的像素宽高。另一种头字段`Content-Type`可以告诉我们图片的类型,如JPEG或PNG,这在解码图片尺寸时是有用的。但这种方法并不能直接获取到像素尺寸。 ...
如果有使用SDWebImage,则首先检查是否缓存过该图片,如果没有,先通过文件头获取图片大小(针对格式为png、gif、jpg文件获取其尺寸大小),如果获取失败,则下载完整的图片data,然后计算大小,如果有使用SDWebImage...
这种照片墙布局允许图片根据它们自身的宽高比自动调整大小和位置,从而在不同尺寸的屏幕上呈现出美观且一致的显示效果。 XLPhotoWall库的核心功能在于它的自动布局算法。它能够智能地计算每个图片视图的大小和位置...
- `HttpURLConnection`或第三方库如`Volley`、`OkHttp`、`Retrofit`等提供了更高效、更方便的网络请求方式,可以优化图片下载性能并支持异步操作。 - 使用`AsyncTask`或`IntentService`来避免主线程阻塞,保证用户...
在互联网应用中,经常需要处理图片资源,而图片的尺寸和大小是进行各种操作(例如调整图片大小、计算页面布局)时的重要参数。在本地图片处理中,我们可以直接使用PHP的内置函数如getimagesize()来获取尺寸信息。...
总的来说,"图片按宽高比及清晰度比率压缩转换为base64"是一种有效的图片优化策略,它结合了图片尺寸调整、质量控制和base64编码,以达到在保持图片质量的同时,减小文件大小,提高网页加载速度。这个过程涉及到了...
在实际应用中,你可能会用到网络请求来获取图片,因此图片加载完成后的回调是调整头部视图高度的关键时刻。使用SDWebImage库或其他图片加载库,可以在图片加载完成后自动调整视图大小。 此外,为了实现类似小红书的...
1. 内存溢出:大量图片可能导致内存占用过高,需合理控制图片大小和数量,适时释放内存。 2. 图片变形:确保图片的宽高比正确,防止拉伸或压缩导致变形。 3. 网络延迟:在网络不稳定时,应提供良好的加载反馈,如...
Glide以其高效和易用性受到开发者欢迎,它能够处理内存和磁盘缓存,自动调整图片大小,适应不同屏幕尺寸。 2. **RecyclerView**: 为了展示图片,我们通常使用RecyclerView代替ListView,因为RecyclerView更高效且...
在`transform()`方法中,我们首先获取原始图片的宽高,然后获取ImageView的宽度,计算缩放比例,并根据比例创建一个新的等比例缩放的Bitmap。`getId()`方法用于返回此`Transformation`的唯一标识,以便Glide能够正确...
在性能方面,JinFileServer优化了图片处理流程,减少了内存占用,并且支持缓存机制,对于频繁请求的图片,系统会自动将处理后的结果存储起来,避免重复计算,从而提高了服务响应速度。 在安全方面,JinFileServer也...
本文将详细介绍如何在Android中实现瀑布流,包括异步加载、自定义行显示、图片大小定制以及上拉下拉刷新等功能。 1. **异步加载** 异步加载是处理大量图片时必不可少的技术,避免因图片加载阻塞主线程导致UI卡顿。...
首先,当我们要从网络上获取图片时,通常会用到Python的网络请求库。Python提供了多个处理网络请求的库,如urllib(Python标准库的一部分),requests等。urllib库在Python 3中分为几个独立的模块,如urllib.request...
当用户从相册选择一张高分辨率的图片,该图片的尺寸可能远超乎我们的想象,比如4000x3000像素,这样的图片不仅占用内存大,而且在网络传输时耗时较长。为了解决这个问题,我们需要对图片进行适当的裁剪和压缩。 一...
这能够进一步优化性能,避免在主线程上做耗时的网络请求或图片解码操作,防止应用界面冻结。 在处理 Bitmap 的过程中,还有一些重要的点需要注意: - 管理内存:对于加载到内存中的图片,需要适时地进行内存管理,...
4. **图片的缩放和裁剪**:Universal-Image-Loader支持对加载的图片进行缩放和裁剪,以适应不同的视图大小,如ImageView的宽高比,防止因图片过大导致内存溢出。 5. **图片动画**:该库还允许添加图片加载和显示的...
1. 设置图片宽高比:通过CSS的max-width: 100%和height: auto属性,图片会根据其父容器的宽度自适应,保持原有比例。 2. 图片懒加载:使用jQuery的lazyload插件,只在图片进入视口时加载,减少页面初次加载时间。 3....
使用`System.Drawing.Image.FromFile()`方法读取本地文件系统的图片,或者使用`System.Drawing.Image.FromStream()`方法从网络流或内存中加载图片。确保正确处理异常,例如文件不存在或格式不支持的情况。 2. **...
合理利用缓存机制,减少网络请求;及时回收不再使用的资源,防止内存泄漏。 7. **布局稳定性**:由于瀑布流布局的复杂性,可能在屏幕旋转、item添加或删除等操作时出现布局不稳定的情况。需要确保在这些情况下布局...