package HaoRan.ImageFilter.Main;
import java.util.ArrayList;
import java.util.List;
import HaoRan.ImageFilter.*;
import HaoRan.ImageFilter.Distort.*;
import HaoRan.ImageFilter.Textures.*;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
public class ImageFilterMain extends Activity {
private ImageView imageView;
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView= (ImageView) findViewById(R.id.imgfilter);
textView = (TextView) findViewById(R.id.runtime);
//注:在android系统上,手机图片尺寸尽量控制在480*480范围内,否则在高斯运算时可以造成内存溢出的问题
Bitmap bitmap = BitmapFactory.decodeResource(ImageFilterMain.this.getResources(), R.drawable.image);
imageView.setImageBitmap(bitmap);
LoadImageFilter();
}
/**
* 加载图片filter
*/
private void LoadImageFilter() {
Gallery gallery = (Gallery) findViewById(R.id.galleryFilter);
final ImageFilterAdapter filterAdapter = new ImageFilterAdapter(
ImageFilterMain.this);
gallery.setAdapter(new ImageFilterAdapter(ImageFilterMain.this));
gallery.setSelection(2);
gallery.setAnimationDuration(3000);
gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
IImageFilter filter = (IImageFilter) filterAdapter.getItem(position);
new processImageTask(ImageFilterMain.this, filter).execute();
}
});
}
public class processImageTask extends AsyncTask<Void, Void, Bitmap> {
private IImageFilter filter;
private Activity activity = null;
public processImageTask(Activity activity, IImageFilter imageFilter) {
this.filter = imageFilter;
this.activity = activity;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
textView.setVisibility(View.VISIBLE);
}
public Bitmap doInBackground(Void... params) {
Image img = null;
try
{
Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.image);
img = new Image(bitmap);
if (filter != null) {
img = filter.process(img);
img.copyPixelsFromBuffer();
}
return img.getImage();
}
catch(Exception e){
if (img != null && img.destImage.isRecycled()) {
img.destImage.recycle();
img.destImage = null;
System.gc(); // 提醒系统及时回收
}
}
finally{
if (img != null && img.image.isRecycled()) {
img.image.recycle();
img.image = null;
System.gc(); // 提醒系统及时回收
}
}
return null;
}
@Override
protected void onPostExecute(Bitmap result) {
if(result != null){
super.onPostExecute(result);
imageView.setImageBitmap(result);
}
textView.setVisibility(View.GONE);
}
}
public class ImageFilterAdapter extends BaseAdapter {
private class FilterInfo {
public int filterID;
public IImageFilter filter;
public FilterInfo(int filterID, IImageFilter filter) {
this.filterID = filterID;
this.filter = filter;
}
}
private Context mContext;
private List<FilterInfo> filterArray = new ArrayList<FilterInfo>();
public ImageFilterAdapter(Context c) {
mContext = c;
//99种效果
//v0.4
filterArray.add(new FilterInfo(R.drawable.video_filter1, new VideoFilter(VideoFilter.VIDEO_TYPE.VIDEO_STAGGERED)));
filterArray.add(new FilterInfo(R.drawable.video_filter2, new VideoFilter(VideoFilter.VIDEO_TYPE.VIDEO_TRIPED)));
filterArray.add(new FilterInfo(R.drawable.video_filter3, new VideoFilter(VideoFilter.VIDEO_TYPE.VIDEO_3X3)));
filterArray.add(new FilterInfo(R.drawable.video_filter4, new VideoFilter(VideoFilter.VIDEO_TYPE.VIDEO_DOTS)));
filterArray.add(new FilterInfo(R.drawable.tilereflection_filter1, new TileReflectionFilter(20, 8, 45, (byte)1)));
filterArray.add(new FilterInfo(R.drawable.tilereflection_filter2, new TileReflectionFilter(20, 8, 45, (byte)2)));
filterArray.add(new FilterInfo(R.drawable.fillpattern_filter, new FillPatternFilter(ImageFilterMain.this, R.drawable.texture1)));
filterArray.add(new FilterInfo(R.drawable.fillpattern_filter1, new FillPatternFilter(ImageFilterMain.this, R.drawable.texture2)));
filterArray.add(new FilterInfo(R.drawable.mirror_filter1, new MirrorFilter(true)));
filterArray.add(new FilterInfo(R.drawable.mirror_filter2, new MirrorFilter(false)));
filterArray.add(new FilterInfo(R.drawable.ycb_crlinear_filter, new YCBCrLinearFilter(new YCBCrLinearFilter.Range(-0.3f, 0.3f))));
filterArray.add(new FilterInfo(R.drawable.ycb_crlinear_filter2, new YCBCrLinearFilter(new YCBCrLinearFilter.Range(-0.276f, 0.163f), new YCBCrLinearFilter.Range(-0.202f, 0.5f))));
filterArray.add(new FilterInfo(R.drawable.texturer_filter, new TexturerFilter(new CloudsTexture(), 0.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.texturer_filter1, new TexturerFilter(new LabyrinthTexture(), 0.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.texturer_filter2, new TexturerFilter(new MarbleTexture(), 1.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.texturer_filter3, new TexturerFilter(new WoodTexture(), 0.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.texturer_filter4, new TexturerFilter(new TextileTexture(), 0.8f, 0.8f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter, new HslModifyFilter(20f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter0, new HslModifyFilter(40f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter1, new HslModifyFilter(60f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter2, new HslModifyFilter(80f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter3, new HslModifyFilter(100f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter4, new HslModifyFilter(150f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter5, new HslModifyFilter(200f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter6, new HslModifyFilter(250f)));
filterArray.add(new FilterInfo(R.drawable.hslmodify_filter7, new HslModifyFilter(300f)));
//v0.3
filterArray.add(new FilterInfo(R.drawable.zoomblur_filter, new ZoomBlurFilter(30)));
filterArray.add(new FilterInfo(R.drawable.threedgrid_filter, new ThreeDGridFilter(16, 100)));
filterArray.add(new FilterInfo(R.drawable.colortone_filter, new ColorToneFilter(Color.rgb(33, 168, 254), 192)));
filterArray.add(new FilterInfo(R.drawable.colortone_filter2, new ColorToneFilter(0x00FF00, 192)));//green
filterArray.add(new FilterInfo(R.drawable.colortone_filter3, new ColorToneFilter(0xFF0000, 192)));//blue
filterArray.add(new FilterInfo(R.drawable.colortone_filter4, new ColorToneFilter(0x00FFFF, 192)));//yellow
filterArray.add(new FilterInfo(R.drawable.softglow_filter, new SoftGlowFilter(10, 0.1f, 0.1f)));
filterArray.add(new FilterInfo(R.drawable.tilereflection_filter, new TileReflectionFilter(20, 8)));
filterArray.add(new FilterInfo(R.drawable.blind_filter1, new BlindFilter(true, 96, 100, 0xffffff)));
filterArray.add(new FilterInfo(R.drawable.blind_filter2, new BlindFilter(false, 96, 100, 0x000000)));
filterArray.add(new FilterInfo(R.drawable.raiseframe_filter, new RaiseFrameFilter(20)));
filterArray.add(new FilterInfo(R.drawable.shift_filter, new ShiftFilter(10)));
filterArray.add(new FilterInfo(R.drawable.wave_filter, new WaveFilter(25, 10)));
filterArray.add(new FilterInfo(R.drawable.bulge_filter, new BulgeFilter(-97)));
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android 图片渲染效果-IT计算机-毕业设计.zip (303个子文件)
proguard.cfg 1KB
ImageFilterMain$ImageFilterAdapter.class 11KB
LensFlareFilter.class 9KB
Image.class 5KB
Gradient.class 4KB
R$drawable.class 4KB
GaussianBlurFilter.class 4KB
ParamEdgeDetectFilter.class 3KB
TileReflectionFilter.class 3KB
ColorToneFilter.class 3KB
ImageBlender.class 3KB
SupernovaFilter.class 3KB
AutoLevelFilter.class 3KB
YCBCrLinearFilter.class 3KB
ConvolutionFilter.class 3KB
ImageFilterMain$processImageTask.class 3KB
HslColor.class 3KB
RadialDistortionFilter.class 3KB
ImageFilterMain.class 2KB
BilinearDistort.class 2KB
NeonFilter.class 2KB
PerlinNoise.class 2KB
BannerFilter.class 2KB
YCBCrLinearFilter$YCbCr.class 2KB
TexturerFilter.class 2KB
RectMatrixFilter.class 2KB
PaintBorderFilter.class 2KB
VideoFilter.class 2KB
WaterWaveFilter.class 2KB
ZoomBlurFilter.class 2KB
BigBrotherFilter.class 2KB
EdgeFilter.class 2KB
ImageFilterMain$1.class 2KB
PixelateFilter.class 2KB
RainBowFilter.class 2KB
IllusionFilter.class 2KB
GradientMapFilter.class 2KB
GradientFilter.class 2KB
ComicFilter.class 2KB
ReflectionFilter.class 2KB
TwistFilter.class 2KB
LomoFilter.class 2KB
BlindFilter.class 2KB
NightVisionFilter.class 2KB
XRadiationFilter.class 2KB
HistogramEqualFilter.class 2KB
CleanGlassFilter.class 2KB
FillPatternFilter.class 2KB
SoftGlowFilter.class 2KB
LightFilter.class 2KB
WaveFilter.class 2KB
WoodTexture.class 2KB
SharpFilter.class 2KB
BrightContrastFilter.class 2KB
BulgeFilter.class 2KB
MarbleTexture.class 2KB
FilmFilter.class 2KB
VignetteFilter.class 2KB
FocusFilter.class 1KB
SceneFilter.class 1KB
RaiseFrameFilter.class 1KB
NoiseFilter.class 1KB
FeatherFilter.class 1KB
SaturationModifyFilter.class 1KB
RippleFilter.class 1KB
VintageFilter.class 1KB
ShiftFilter.class 1KB
HslModifyFilter.class 1KB
SmashColorFilter.class 1KB
ThreeDGridFilter.class 1KB
OilPaintFilter.class 1KB
MonitorFilter.class 1KB
BlockPrintFilter.class 1KB
OldPhotoFilter.class 1KB
TextileTexture.class 1KB
MistFilter.class 1KB
ColorQuantizeFilter.class 1KB
LUTFilter.class 1KB
LabyrinthTexture.class 1KB
MirrorFilter.class 1KB
CloudsTexture.class 1KB
BrickFilter.class 1KB
SepiaFilter.class 1KB
MosaicFilter.class 1KB
TintFilter.class 1KB
ThresholdFilter.class 1KB
ReliefFilter.class 1019B
BlackWhiteFilter.class 986B
ImageBlender$BlendMode.class 943B
InvertFilter.class 908B
ImageFilterMain$ImageFilterAdapter$FilterInfo.class 893B
YCBCrLinearFilter$MyColor.class 872B
AutoAdjustFilter.class 868B
GammaFilter.class 797B
IImageFilter$Function.class 795B
LensFlareFilter$Reflect.class 749B
PosterizeFilter.class 743B
VideoFilter$VIDEO_TYPE.class 622B
YCBCrLinearFilter$Range.class 602B
LensFlareFilter$FloatRGB.class 561B
共 303 条
- 1
- 2
- 3
- 4
资源评论
芝麻粒儿
- 粉丝: 5w+
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功