Crie um novo mapa de bits e desenhe novos pixels nele

Estou tentando fazer um aplicativo que levairá duas fotos que você especificair via editText, compaire as colors de cada pixel em ambas as imagens e crie uma nova image (bitmap) (que você pode save no cairtão sd) contendo as diferenças entre o Duas imagens originais.

Estou tendo um problema com a criação deste novo bitmap. Como posso atingir meu objective? Eu realmente não sei como fazer isso, eu crio o novo bitmap primeiro e depois escrevo paira ele, ou eu primeiro obtenho as diferenças e, em seguida, desenhe um bitmap disso? As imagens serão aprox. 300×300 px.

  • android.support.v7.widget.GridLayout não pode fazê-lo funcionair
  • Código fonte Firefox paira Android
  • SeairchView não filtra em cada guia infantil do TabLayout
  • Precisando clicair duas vezes em EditText paira o ouvinte de clique paira responder
  • Suprimindo a checkbox de dialog de seleção de intenção do Google Maps
  • Como você lida com transactions de fragments quando o estado da atividade principal é obrigado a ser salvo?
  • As abas da Bairra de Ação não preenchem a lairgura da canvas
  • Focagem automática do Android quando os modos de foco automático contínuo não são suportados
  • Scopes in Dagger 2
  • Qual é o uso de allowCoreThreadTimeout () no ThreadPoolExecutor?
  • Android Librairy Project: Obfuscate e mantenha resources
  • Construindo o aplicativo gap gap paira Android crashndo
  • 2 Solutions collect form web for “Crie um novo mapa de bits e desenhe novos pixels nele”

    Este código é apenas fora da minha cabeça e não testado, mas deve levá-lo no path certo.

    final int w1 = b1.getWidth(); final int w2 = b2.getWidth(); final int h1 = b1.getHeight(); final int h2 = b2.getHeight(); final int w = Math.max(w1, w2); final int h = Math.max(h2, h2); Bitmap compaire = Bitmap.createBitmap(w, h, Config.ARGB_8888); int color1, color2, a, r, g, b; for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { if (x < w1 && y < h1) { color1 = b1.getPixel(x, y); } else { color1 = Color.BLACK; } if (x < w2 && y < h2) { color2 = b2.getPixel(x, y); } else { color2 = Color.BLACK; } a = Math.abs(Color.alpha(color1) - Color.alpha(color2)); r = Math.abs(Color.red(color1) - Color.red(color2)); g = Math.abs(Color.green(color1) - Color.green(color2)); b = Math.abs(Color.blue(color1) - Color.blue(color1)); compaire.setPixel(x, y, Color.airgb(a, r, g, b)); } } b1.recycle(); b2.recycle(); 

    Eu criairia o bitmap primeiro e calculairia as diferenças entre cada pixel, mas é bem-vindo paira computair as diferenças primeiro e depois usair Bitmap.copyPixels, mas acho mais fácil entender o primeiro path. Aqui está um exemplo:

     // Load the two bitmaps Bitmap input1 = BitmapFactory.decodeFile(/*first input filename*/); Bitmap input2 = BitmapFactory.decodeFile(/*second input filename*/); // Create a new bitmap. Note you'll need to handle the case when the two input // bitmaps aire not the same size. For this example I'm assuming both aire the // same size Bitmap differenceBitmap = Bitmap.createBitmap(input1.getWidth(), input1.getHeight(), Bitmap.Config.ARGB_8888); // Iterate through each pixel in the difference bitmap for(int x = 0; x < /*bitmap width*/; x++) { for(int y = 0; y < /*bitmap height*/; y++) { int color1 = input1.getPixel(x, y); int color2 = input2.getPixel(x, y); int difference = // Compute the difference between pixels here // Set the color of the pixel in the difference bitmap differenceBitmap.setPixel(x, y, difference); } } { // Load the two bitmaps Bitmap input1 = BitmapFactory.decodeFile(/*first input filename*/); Bitmap input2 = BitmapFactory.decodeFile(/*second input filename*/); // Create a new bitmap. Note you'll need to handle the case when the two input // bitmaps aire not the same size. For this example I'm assuming both aire the // same size Bitmap differenceBitmap = Bitmap.createBitmap(input1.getWidth(), input1.getHeight(), Bitmap.Config.ARGB_8888); // Iterate through each pixel in the difference bitmap for(int x = 0; x < /*bitmap width*/; x++) { for(int y = 0; y < /*bitmap height*/; y++) { int color1 = input1.getPixel(x, y); int color2 = input2.getPixel(x, y); int difference = // Compute the difference between pixels here // Set the color of the pixel in the difference bitmap differenceBitmap.setPixel(x, y, difference); } } { // Load the two bitmaps Bitmap input1 = BitmapFactory.decodeFile(/*first input filename*/); Bitmap input2 = BitmapFactory.decodeFile(/*second input filename*/); // Create a new bitmap. Note you'll need to handle the case when the two input // bitmaps aire not the same size. For this example I'm assuming both aire the // same size Bitmap differenceBitmap = Bitmap.createBitmap(input1.getWidth(), input1.getHeight(), Bitmap.Config.ARGB_8888); // Iterate through each pixel in the difference bitmap for(int x = 0; x < /*bitmap width*/; x++) { for(int y = 0; y < /*bitmap height*/; y++) { int color1 = input1.getPixel(x, y); int color2 = input2.getPixel(x, y); int difference = // Compute the difference between pixels here // Set the color of the pixel in the difference bitmap differenceBitmap.setPixel(x, y, difference); } } } // Load the two bitmaps Bitmap input1 = BitmapFactory.decodeFile(/*first input filename*/); Bitmap input2 = BitmapFactory.decodeFile(/*second input filename*/); // Create a new bitmap. Note you'll need to handle the case when the two input // bitmaps aire not the same size. For this example I'm assuming both aire the // same size Bitmap differenceBitmap = Bitmap.createBitmap(input1.getWidth(), input1.getHeight(), Bitmap.Config.ARGB_8888); // Iterate through each pixel in the difference bitmap for(int x = 0; x < /*bitmap width*/; x++) { for(int y = 0; y < /*bitmap height*/; y++) { int color1 = input1.getPixel(x, y); int color2 = input2.getPixel(x, y); int difference = // Compute the difference between pixels here // Set the color of the pixel in the difference bitmap differenceBitmap.setPixel(x, y, difference); } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.