【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

ImageLoader缓存

原创 2016年06月01日 12:24:11


Application要在Xml配置文件里面配置

在Xml的application标签里面配置

 android:name="com.bwei.app.App"




ImageLoaderUtils.java


package com.example.app;

import com.example.xmljiexi.R;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration.Builder;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import android.content.Context;
import android.graphics.Bitmap;

public class ImageLoaderUtils {
	 public static void initConfiguration(Context context) {
		 Builder configuration = new ImageLoaderConfiguration.Builder(context);
		 configuration.memoryCacheExtraOptions(480, 800)
			  .diskCacheExtraOptions(480, 800, null)
			  // .taskExecutor(null)
			  // .taskExecutorForCachedImages()
			  .threadPoolSize(3)
			  // default 线程优先级
			  .threadPriority(Thread.NORM_PRIORITY - 2)
			  // default
			  .tasksProcessingOrder(QueueProcessingType.FIFO)
			  // // default设置在内存中缓存图像的多种尺寸
			  // 加载同一URL图片时,imageView从小变大时,从内存缓存中加载
			  .denyCacheImageMultipleSizesInMemory()
			  // 超过设定的缓存大小时,内存缓存的清除机制
			  .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
			  // 内存的一个大小
			  .memoryCacheSize(2 * 1024 * 1024).memoryCacheSizePercentage(13)
			  // default 将图片信息缓存到该路径下
			  // default 磁盘缓存的大小
			  .diskCacheSize(50 * 1024 * 1024)
			  // 磁盘缓存文件的个数
			  .diskCacheFileCount(100)
			  // 磁盘缓存的文件名的命名方式//一般使用默认值 (获取文件名称的hashcode然后转换成字符串)或MD5 new
			  // Md5FileNameGenerator()源文件的名称同过md5加密后保存
			  .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
			  // 设置默认的图片加载
			  // 使用默认的图片解析器
			  .imageDecoder(new BaseImageDecoder(true)) // default
			  .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
			  .writeDebugLogs();
		 ImageLoader.getInstance().init(configuration.build());
	 }
	 public static DisplayImageOptions initOptions() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
            .showImageOnLoading(R.drawable.ic_launcher)
            .showImageOnFail(R.drawable.ic_launcher)
            .cacheInMemory(true)
            .cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565)
             // 是否考虑JPEG图像EXIF参数(旋转,翻转)
            .considerExifParams(true)
            // 设置图片以如何的编码方式显示
            .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
            // 设置图片的解码类型//
            .bitmapConfig(Bitmap.Config.RGB_565)
            // 设置图片在下载前是否重置,复位
            .resetViewBeforeLoading(true)
            // 是否设置为圆角,弧度为多少
            .displayer(new RoundedBitmapDisplayer(20))
            // 是否图片加载好后渐入的动画时间
            .displayer(new FadeInBitmapDisplayer(100))
            // 构建完成 
            .build();
        return options;
    
    }
}
MyApplication.java

package com.example.app;

import android.app.Application;

public class MyApplication extends Application {
	@Override
	public void onCreate() {
		super.onCreate();
		ImageLoaderUtils.initConfiguration(getApplicationContext());
	}

}



图片变成园,跟头像圆形一样。


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundPicture extends ImageView{

    private Paint paint ;
    
    public RoundPicture(Context context) {  
        this(context,null);  
    }  
 
    public RoundPicture(Context context, AttributeSet attrs) {  
        this(context, attrs,0);  
    }  
 
    public RoundPicture(Context context, AttributeSet attrs, int defStyle) {  
        super(context, attrs, defStyle);
        paint = new Paint();
        
    }  
 
    /**
     * 绘制圆形图片
     * @author caizhiming
     */
    @Override  
    protected void onDraw(Canvas canvas) {  
 
        Drawable drawable = getDrawable();  
        if (null != drawable) {  
            BitmapDrawable bd=(BitmapDrawable) drawable;
            Bitmap bitmap = (bd).getBitmap();  
            Bitmap b = getCircleBitmap(bitmap);  
            final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());  
            final Rect rectDest = new Rect(0,0,getWidth(),getHeight());
            paint.reset();  
            canvas.drawBitmap(b, rectSrc, rectDest, paint);  
 
        } else {  
            super.onDraw(canvas);  
        }  
    }  
 
    /**
     * 获取圆形图片方法
     * @param bitmap
     * @param pixels
     * @return Bitmap
     * @author caizhiming
     */
    private Bitmap getCircleBitmap(Bitmap bitmap) {  
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),  
                bitmap.getHeight(), Config.ARGB_8888);  
        Canvas canvas = new Canvas(output);  
          
        final int color = 0xff424242;
       
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());  
        paint.setAntiAlias(true);  
        canvas.drawARGB(0, 0, 0, 0);  
        paint.setColor(color);  
        int x = bitmap.getWidth();
        
        canvas.drawCircle(x / 2, x / 2, x / 2, paint);  
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
        canvas.drawBitmap(bitmap, rect, rect, paint);  
        return output;  
        
        
    }  
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

ImageLoader缓存Sdcard读写

package baway.com.yuejunfei1503a20170424; import android.app.Application; import android.os.Environ...

使用Volley框架的ImageLoader加载网络图片

Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载. ImageLoader的内部使用ImageRequest来实现,它的构造器可以传入一个ImageCache缓存形参,实现了图片缓存的功能,同时还可以过滤重复链接,避免重复发送请求。 下面是ImageLoader加载图片的实现方法: [code] public void displayImg(View view){ ImageView imageView = (ImageView)this.findViewById(R.id.image_view); Re

Android四大图片缓存(Imageloader,Picasso,Glide,Fresco)原理、特性对比

Android四大图片缓存

Android 四大大图片缓存(Imageloader,Picasso,Glide,Fresco)原理、特性对比

四大图片缓存基本信息 Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用。   Picasso 是 Square 开源的项目,且他的主...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)