package com.sailrobotics.posterize;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
/**
* Created by arjuns on 6/28/2015.
*/
public class ApplyEffectsActivity extends Activity {
ImageButton previousActivityButton, nextActivityButton;
ImageButton noneImageButton,invertImageButton,sepiaImageButton,greyscaleImageButton;
ImageButton boostRedImageButton,boostGreenImageButton,boostBlueImageButton;
Intent nextIntent, previousIntent;
ImageView baseImageView;
Bitmap baseBitmap, thumbnailBitmap;
Bitmap editedBitmap;
ArrayList<Bitmap> bitmapArray = new ArrayList<Bitmap>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_apply_effects);
nextActivityButton = (ImageButton)findViewById(R.id.imageButtonRightEffect);
invertImageButton = (ImageButton)findViewById(R.id.invertIB);
sepiaImageButton = (ImageButton)findViewById(R.id.sepiaIB);
noneImageButton = (ImageButton)findViewById(R.id.noEffectIB);
greyscaleImageButton = (ImageButton)findViewById(R.id.greyScaleIB);
boostRedImageButton = (ImageButton)findViewById(R.id.boostRedIB);
boostGreenImageButton = (ImageButton)findViewById(R.id.boostGreenIB);
boostBlueImageButton = (ImageButton)findViewById(R.id.boostBlueIB);
baseImageView = (ImageView)findViewById(R.id.effectsImage);
String path = getIntent().getStringExtra("filePath");
Log.e("post", path);
baseImageView.setImageURI(Uri.parse(path));
baseBitmap = BitmapFactory.decodeFile(path);
thumbnailBitmap = baseBitmap;
BitmapFactory.Options myThumbnailOptions = new BitmapFactory.Options();
myThumbnailOptions.inSampleSize = 5;
thumbnailBitmap = BitmapFactory.decodeFile(path, myThumbnailOptions);
noneImageButton.setImageBitmap(baseBitmap);
ApplyEffectsToButon effect = new ApplyEffectsToButon();
effect.execute();
noneImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
baseImageView.setImageBitmap(baseBitmap);
}
});
invertImageButton.setOnClickListener(new View.OnClickListener() {
ImageEffects addEffect = new ImageEffects();
@Override
public void onClick(View v) {
editedBitmap = addEffect.doInvert(baseBitmap);
baseImageView.setImageBitmap(editedBitmap);
}
});
sepiaImageButton.setOnClickListener(new View.OnClickListener() {
ImageEffects addEffect = new ImageEffects();
@Override
public void onClick(View v) {
editedBitmap = addEffect.doSepia(baseBitmap);
baseImageView.setImageBitmap(editedBitmap);
}
});
greyscaleImageButton.setOnClickListener(new View.OnClickListener() {
ImageEffects addEffect = new ImageEffects();
@Override
public void onClick(View v) {
editedBitmap = addEffect.doGreyscale(baseBitmap);
baseImageView.setImageBitmap(editedBitmap);
}
});
boostRedImageButton.setOnClickListener(new View.OnClickListener() {
ImageEffects addEffect = new ImageEffects();
@Override
public void onClick(View v) {
editedBitmap = addEffect.doColourBoost(baseBitmap,1,5);
baseImageView.setImageBitmap(editedBitmap);
}
});
boostGreenImageButton.setOnClickListener(new View.OnClickListener() {
ImageEffects addEffect = new ImageEffects();
@Override
public void onClick(View v) {
editedBitmap = addEffect.doColourBoost(baseBitmap,2,1);
baseImageView.setImageBitmap(editedBitmap);
}
});
boostBlueImageButton.setOnClickListener(new View.OnClickListener() {
ImageEffects addEffect = new ImageEffects();
@Override
public void onClick(View v) {
editedBitmap = addEffect.doColourBoost(baseBitmap,3,2);
baseImageView.setImageBitmap(editedBitmap);
}
});
nextActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File file = savePictureAfterEffects();
nextIntent = new Intent(ApplyEffectsActivity.this, PosterMeasurementsActivity.class);
nextIntent.putExtra("filePath", file.getPath());
if(editedBitmap == null)
{
nextIntent.putExtra("bitmapWidth", baseBitmap.getWidth() + "");
nextIntent.putExtra("bitmapHeight", baseBitmap.getHeight() + "");
}
else
{
nextIntent.putExtra("bitmapWidth", editedBitmap.getWidth() + "");
nextIntent.putExtra("bitmapHeight", editedBitmap.getHeight() + "");
}
startActivity(nextIntent);
}
});
}
/** Create a File for saving an image*/
private File savePictureAfterEffects(){
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "Posterize");
// Create the storage directory if it does not exist
if (! mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()){
Log.d("Posterize", "failed to create directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator + "afterEffect.png");
try {
OutputStream stream = new FileOutputStream(mediaFile);
/* Write bitmap to file using JPEG or PNG and 80% quality hint for JPEG. */
if(editedBitmap == null) {
baseBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
}
else {
editedBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
}
stream.close();
}
catch (Exception e)
{
}
return mediaFile;
}
private class ApplyEffectsToButon extends AsyncTask<Void, Void, Void> {
ProgressDialog progressDialog;
//declare other objects as per your need
@Override
protected void onPreExecute()
{
progressDialog= ProgressDialog.show(ApplyEffectsActivity.this, "Posterize","Loading Effects...", true);
//do initialization of required objects objects here
};
@Override
protected Void doInBackground(Void... params)
{
ImageEffects horizontalScrollObject = new ImageEffects();
bitmapArray.add(horizontalScrollObject.doInvert(thumbnailBitmap));
bitmapArray.add(horizontalScrollObject.doSepia(thumbnailBitmap));
bitmapArray.add(horizontalScrollObject.doGreyscale(thumbnailBitmap));
bitmapArray.add(horizontalScrollObject.doColourBoost(thumbnailBitmap, 1, 5));
bitmapArray.add(horizontalScrollObject.doColourBoost(thumbnailBitmap, 2, 1));
bitmapArray.add(horizontalScrollObject.doColourBoost(thumbnailBitmap, 3, 2));
return null;
}
@Override
protected void onPostExecute(Void result)
{
invertImageButton.setImageBitmap(bitmapArray.get(0));
sepiaImageButton.setImageBitmap(bitmapArray.get(1));
greyscaleImageButton.setImageBitmap(bitmapArray.get(2));
boostRedImageButton.setImageBitmap(bitmapArray.get(3));
boostGreenImageButton.setImageBitmap(bitmapArray.get(4));
boostBlueImageButton.setImageBitmap(bitmapArray.get(5));
super.onPostExecute(result);
progressDialog.dismiss();
};
}
}