Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. import android.graphics.Bitmap;
  2. import android.graphics.BitmapFactory;
  3. import android.os.AsyncTask;
  4. import android.renderscript.Allocation;
  5. import android.renderscript.RenderScript;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.ImageView;
  11.  
  12. public class MainActivity extends AppCompatActivity {
  13.  
  14. private Bitmap mBitmapIn;
  15. private Bitmap mBitmapOut;
  16. private ImageView mImageView;
  17. private Button mButton;
  18. private Allocation mInAllocation;
  19. private Allocation mOutAllocation;
  20.  
  21. private ScriptC_single mScript;
  22. private RenderScriptTask mCurrentTask;
  23.  
  24. @Override
  25. protected void onCreate(Bundle savedInstanceState) {
  26. super.onCreate(savedInstanceState);
  27. setContentView(R.layout.activity_main);
  28.  
  29. // Initialize UI
  30. mBitmapIn = loadBitmap(R.drawable.data);
  31.  
  32. mBitmapOut = Bitmap.createBitmap
  33. (
  34. mBitmapIn.getWidth(),
  35. mBitmapIn.getHeight(),
  36. mBitmapIn.getConfig()
  37. );
  38.  
  39.  
  40. mImageView = (ImageView) findViewById(R.id.imageView);
  41. mImageView.setImageBitmap(mBitmapOut);
  42.  
  43. mButton = (Button) findViewById(R.id.button);
  44.  
  45. RenderScript rs = RenderScript.create(this);
  46. mInAllocation = Allocation.createFromBitmap(rs, mBitmapIn);
  47. mOutAllocation = Allocation.createFromBitmap(rs, mBitmapOut);
  48. mScript = new ScriptC_single(rs);
  49.  
  50.  
  51. mButton.setOnClickListener(new View.OnClickListener() {
  52. @Override
  53. public void onClick(View view) {
  54.  
  55. mScript.invoke_process(mInAllocation, mOutAllocation);
  56. mOutAllocation.copyTo(mBitmapOut);
  57. mImageView.setImageBitmap(mBitmapOut);
  58. mImageView.invalidate();
  59. }
  60. });
  61. }
  62.  
  63.  
  64. /**
  65. * Helper to load Bitmap from resource
  66. */
  67. private Bitmap loadBitmap(int resource) {
  68. final BitmapFactory.Options options = new BitmapFactory.Options();
  69. options.inPreferredConfig = Bitmap.Config.ARGB_8888;
  70. return BitmapFactory.decodeResource(getResources(), resource, options);
  71. }
  72. }
  73.  
  74. #pragma version(1)
  75. #pragma rs java_package_name(com.celik.abdullah.playingwithsaturation)
  76. #pragma rs_fp_relaxed
  77.  
  78. uchar4 __attribute__((kernel)) invert(uchar4 in){
  79. uchar4 out = in;
  80.  
  81. out.r = 255 - in.r;
  82. out.g = 255 - in.g;
  83. out.b = 255 - in.b;
  84.  
  85. return out;
  86. }
  87.  
  88. uchar4 __attribute__((kernel)) greyscale(uchar4 in) {
  89.  
  90. uchar grayscale = in.r * 0.299 + in.g * 0.587 + in.b * 0.114;
  91.  
  92. uchar4 pixelOut;
  93.  
  94. pixelOut.a = in.a;
  95. pixelOut.r = grayscale;
  96. pixelOut.g = grayscale;
  97. pixelOut.b = grayscale;
  98.  
  99. return pixelOut;
  100. }
  101.  
  102. void process(rs_allocation inputImage, rs_allocation outputImage) {
  103. const uint32_t imageWidth = rsAllocationGetDimX(inputImage);
  104. const uint32_t imageHeight = rsAllocationGetDimY(inputImage);
  105. rs_allocation tmp = rsCreateAllocation_uchar4(imageWidth, imageHeight);
  106. rsForEach(invert, inputImage, tmp);
  107. rsForEach(greyscale, tmp, outputImage);
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement