package jp.myndns.sys1yagi.android.gpuimageforandroidsample; import jp.co.cyberagent.android.gpuimage.GPUImageFilter; import jp.co.cyberagent.android.gpuimage.GPUImageGrayscaleFilter; import jp.co.cyberagent.android.gpuimage.GPUImageSepiaFilter; import jp.co.cyberagent.android.gpuimage.GPUImageSharpenFilter; import jp.co.cyberagent.android.gpuimage.GPUImageSobelEdgeDetection; import jp.co.cyberagent.android.gpuimage.GPUImageView; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class ImageProccessingActivity extends Activity implements OnClickListener, OnSeekBarChangeListener { private GPUImageView mImageView = null; private SeekBar mSeekBar = null; private GPUImageSepiaFilter mSepia = null; private GPUImageGrayscaleFilter mGray = null; private GPUImageSharpenFilter mSharp = null; private GPUImageSobelEdgeDetection mEdge = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_proccessing); mImageView = (GPUImageView) findViewById(R.id.gpuimage); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image); mImageView.setImage(bitmap); mSeekBar = (SeekBar) findViewById(R.id.seekBar1); mSeekBar.setMax(100); mSeekBar.setEnabled(false); mSeekBar.setOnSeekBarChangeListener(this); // セピア mSepia = new GPUImageSepiaFilter(); // 白黒 mGray = new GPUImageGrayscaleFilter(); // シャープ // -4.0 to 4.0 mSharp = new GPUImageSharpenFilter(); // エッジ // 0.0 to 5.0 mEdge = new GPUImageSobelEdgeDetection(); findViewById(R.id.sepia).setOnClickListener(this); findViewById(R.id.gray).setOnClickListener(this); findViewById(R.id.sharp).setOnClickListener(this); findViewById(R.id.edge).setOnClickListener(this); } @Override public void onStopTrackingTouch(SeekBar seekBar) {/* なにもしない */ } @Override public void onStartTrackingTouch(SeekBar seekBar) {/* なにもしない */ } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { GPUImageFilter filter = mImageView.getFilter(); if (filter instanceof GPUImageSharpenFilter) { float level = (8.0f * progress / 100.0f) - 4.0f; mSharp.setSharpness(level); mImageView.setFilter(mSharp); } else if (filter instanceof GPUImageSobelEdgeDetection) { float level = (5.0f * progress / 100.0f); mEdge.setLineSize(level); mImageView.setFilter(mEdge); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.sepia: mImageView.setFilter(mSepia); mSeekBar.setEnabled(false); break; case R.id.gray: mImageView.setFilter(mGray); mSeekBar.setEnabled(false); break; case R.id.sharp: mImageView.setFilter(mSharp); mSeekBar.setEnabled(true); break; case R.id.edge: mImageView.setFilter(mEdge); mSeekBar.setEnabled(true); break; } } }