diff --git a/example/src/main/AndroidManifest.xml b/example/src/main/AndroidManifest.xml index 2e8df57..4075b9d 100644 --- a/example/src/main/AndroidManifest.xml +++ b/example/src/main/AndroidManifest.xml @@ -1,7 +1,9 @@ - + + + thumbs = ThumbnailsManager.processThumbs(context); ThumbnailsAdapter adapter = new ThumbnailsAdapter(thumbs, (ThumbnailCallback) activity); @@ -97,7 +173,95 @@ public void run() { } @Override - public void onThumbnailClick(Filter filter) { - placeHolderImageView.setImageBitmap(filter.processFilter(Bitmap.createScaledBitmap(BitmapFactory.decodeResource(this.getApplicationContext().getResources(), R.drawable.photo), 640, 640, false))); + public void onThumbnailClick(Filter filter) + { + filteredBitmap = filter.processFilter(Bitmap.createScaledBitmap(bitmap, placeHolderImageView.getDrawable().getIntrinsicWidth(), placeHolderImageView.getDrawable().getIntrinsicHeight(), false)); + placeHolderImageView.setImageBitmap(filteredBitmap); + } + + private void save_photo() + { + Bitmap filteredBitmap = ((BitmapDrawable) placeHolderImageView.getDrawable()).getBitmap(); + MediaStore.Images.Media.insertImage(getContentResolver(), filteredBitmap, + "photo_" + System.currentTimeMillis(), ""); + Toast.makeText(MainActivity.this, "saved in Pictures", Toast.LENGTH_SHORT).show(); + } + + private void import_photo() + { + final CharSequence[] options = { "Take Photo", "Choose from Gallery","Cancel" }; + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); + builder.setTitle("Choose Photo"); + builder.setItems(options, new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int item) + { + if (options[item].equals("Take Photo")) + { + ContentValues values = new ContentValues(); + values.put(MediaStore.Images.Media.TITLE, "New Picture"); + values.put(MediaStore.Images.Media.DESCRIPTION, "From your Camera"); + imageUri = getContentResolver().insert( + MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); + Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); + if (takePictureIntent.resolveActivity(getPackageManager()) != null) + startActivityForResult(takePictureIntent, 1); + } + else if (options[item].equals("Choose from Gallery")) + { + Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); + startActivityForResult(gallery, 2); + } + else if (options[item].equals("Cancel")) + { + dialog.dismiss(); + } + } + }); + builder.show(); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) + { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) + { + if (requestCode == 1) + { + try + { + bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri); + placeHolderImageView.setImageBitmap(bitmap); + } + catch (Exception e) + { + e.printStackTrace(); + } + assert bitmap != null; + bitmap = bitmap.copy(Bitmap.Config.ARGB_8888 , true); + filteredBitmap = bitmap; + bindDataToAdapter(); + } + else if (requestCode == 2) + { + imageUri = data.getData(); + placeHolderImageView.setImageURI(imageUri); + try + { + bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); + } + catch (IOException e) + { + e.printStackTrace(); + } + assert bitmap != null; + bitmap = bitmap.copy(Bitmap.Config.ARGB_8888 , true); + filteredBitmap = bitmap; + bindDataToAdapter(); + } + } } } diff --git a/example/src/main/res/drawable/import_photo.png b/example/src/main/res/drawable/import_photo.png new file mode 100644 index 0000000..3c3bbfe Binary files /dev/null and b/example/src/main/res/drawable/import_photo.png differ diff --git a/example/src/main/res/drawable/rotate_left.png b/example/src/main/res/drawable/rotate_left.png new file mode 100644 index 0000000..a821ac1 Binary files /dev/null and b/example/src/main/res/drawable/rotate_left.png differ diff --git a/example/src/main/res/drawable/rotate_right.png b/example/src/main/res/drawable/rotate_right.png new file mode 100644 index 0000000..45f3392 Binary files /dev/null and b/example/src/main/res/drawable/rotate_right.png differ diff --git a/example/src/main/res/drawable/save_photo.png b/example/src/main/res/drawable/save_photo.png new file mode 100644 index 0000000..ba1320f Binary files /dev/null and b/example/src/main/res/drawable/save_photo.png differ diff --git a/example/src/main/res/layout/activity_main.xml b/example/src/main/res/layout/activity_main.xml index 28c43a1..58ca4e9 100644 --- a/example/src/main/res/layout/activity_main.xml +++ b/example/src/main/res/layout/activity_main.xml @@ -17,6 +17,7 @@ /> + + + + + + + + + diff --git a/photofilterssdk/src/main/java/com/zomato/photofilters/SampleFilters.java b/photofilterssdk/src/main/java/com/zomato/photofilters/SampleFilters.java index 6f2a663..75238a6 100644 --- a/photofilterssdk/src/main/java/com/zomato/photofilters/SampleFilters.java +++ b/photofilterssdk/src/main/java/com/zomato/photofilters/SampleFilters.java @@ -3,7 +3,9 @@ import com.zomato.photofilters.geometry.Point; import com.zomato.photofilters.imageprocessors.Filter; import com.zomato.photofilters.imageprocessors.subfilters.BrightnessSubFilter; +import com.zomato.photofilters.imageprocessors.subfilters.ColorOverlaySubFilter; import com.zomato.photofilters.imageprocessors.subfilters.ContrastSubFilter; +import com.zomato.photofilters.imageprocessors.subfilters.SaturationSubFilter; import com.zomato.photofilters.imageprocessors.subfilters.ToneCurveSubFilter; /** @@ -135,4 +137,36 @@ public static Filter getNightWhisperFilter() { filter.addSubFilter(new ToneCurveSubFilter(rgbKnots, redKnots, greenKnots, blueKnots)); return filter; } + + public static Filter getMonoChromeFilter() { + + Filter filter = new Filter(); +// filter.addSubFilter(new ToneCurveSubFilter(rgbKnots, redKnots, greenKnots, blueKnots)); +// filter.addSubFilter(new BrightnessSubFilter(-100)); + filter.addSubFilter(new SaturationSubFilter(-10)); + +// filter.addSubFilter(new ContrastSubFilter(2f)); +// filter.addSubFilter(new ColorOverlaySubFilter(4, 10F, 10F, 10F)); + return filter; + } + + public static Filter getVioletFilter() + { + Point[] greenKnots; + greenKnots = new Point[8]; + greenKnots[0] = new Point(0, 0); + greenKnots[1] = new Point(86, 34); + greenKnots[2] = new Point(117, 41); + greenKnots[3] = new Point(146, 80); + greenKnots[4] = new Point(170, 151); + greenKnots[5] = new Point(200, 214); + greenKnots[6] = new Point(225, 242); + greenKnots[7] = new Point(255, 255); + Filter filter = new Filter(); + filter.addSubFilter(new SaturationSubFilter((float) -1)); + filter.addSubFilter(new ColorOverlaySubFilter(80,(float) 0.1,0,(float) 0.9)); + filter.addSubFilter(new BrightnessSubFilter(-30)); + filter.addSubFilter(new ToneCurveSubFilter(null,null , greenKnots, null)); + return filter; + } }