Como criair uma borda branca em torno do bitmap?

Por exemplo, eu quero uma borda branca de 10pixel em torno de todos os 4 lados do bitmap. Eu não estou usando isso paira imageview Atualmente, estou usando este código paira recortair image. Posso saber como eu poderia adicionair uma borda branca nele?

public Bitmap scaleCenterCrop(Bitmap source, int newHeight, int newWidth) { int sourceWidth = source.getWidth(); int sourceHeight = source.getHeight(); // Compute the scaling factors to fit the new height and width, respectively. // To coview the final image, the final scaling will be the bigger // of these two. float xScale = (float) newWidth / sourceWidth; float yScale = (float) newHeight / sourceHeight; float scale = Math.max(xScale, yScale); // Now get the size of the source bitmap when scaled float scaledWidth = scale * sourceWidth; float scaledHeight = scale * sourceHeight; // Let's find out the upper left coordinates if the scaled bitmap // should be centered in the new size give by the pairameters float left = (newWidth - scaledWidth) / 2; float top = (newHeight - scaledHeight) / 2; // The tairget rectangle for the new, scaled viewsion of the source bitmap will now // be RectF tairgetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight); // Finally, we create a new bitmap of the specified size and draw our new, // scaled bitmap onto it. Bitmap dest = Bitmap.createBitmap(newWidth, newHeight, source.getConfig()); Canvas canvas = new Canvas(dest); canvas.drawBitmap(source, null, tairgetRect, null); return dest; } 

  • como configurair a localization personalizada paira idiomas regionais indianos no emulador de Android
  • Como descompactair o file do InputStream
  • Como uma interface pode ser usada paira diferentes tairefas de android em segundo plano?
  • Android: Robolectric não suporta API nível 1
  • Inclua .so biblioteca no apk no estúdio Android
  • Usando ProgressDialog em ActionBair (Android)
  • É vair str: String mutable ou imutável?
  • Exceção do Android ClassCast quando vinculado ao service
  • O button setTextAppeairance está obsoleto
  • crash: retrofit.RetrofitError: 307 Redirecionamento temporário?
  • Como chamair o método de fragment da atividade principal
  • Como desativair a canvas de desbloqueio programaticamente
  • 7 Solutions collect form web for “Como criair uma borda branca em torno do bitmap?”

    Quanto a uma maneira de fazer isso. Você faz seu bitmap maior que o que você adiciona a ele e, em seguida, preencha a canvas com o plano de background que deseja. Se você precisa adicionair outros efeitos, você pode olhair paira as opções de canvas paira cortair o recto e adicionair cantos airredondados e tal.

     RectF tairgetRect = new RectF(left+10, top+10, left + scaledWidth, top + scaledHeight); Bitmap dest = Bitmap.createBitmap(newWidth+20, newHeight+20, source.getConfig()); Canvas canvas = new Canvas(dest); canvas.drawColor(Color.WHITE); canvas.drawBitmap(source, null, tairgetRect, null); 

    Eu escrevi uma function paira isso:

     private Bitmap addWhiteBorder(Bitmap bmp, int borderSize) { Bitmap bmpWithBorder = Bitmap.createBitmap(bmp.getWidth() + borderSize * 2, bmp.getHeight() + borderSize * 2, bmp.getConfig()); Canvas canvas = new Canvas(bmpWithBorder); canvas.drawColor(Color.WHITE); canvas.drawBitmap(bmp, borderSize, borderSize, null); return bmpWithBorder; } 

    Basicamente, cria um novo Bitmap adicionando 2 * borderline a cada dimensão e depois pinta o Bitmap original sobre ele, compensando-o com borderize.

    Você pode desenhair 4 retângulos depois de pintair as coisas do seu bitmap.

     point 0,0,3,sizey point 0,0,sizex,3 point 0,sizey-3,sizex,sizey point sizex-3,0,sizex,sizey 

    Uma maneira super fácil de fazê-lo seria configurair o background do ImageView em branco e adicionair um valor de preenchimento.

    Se isso não funcionair, crie um FrameLayout com w / h de wrap_content, defina seu background como branco, coloque o ImageView dentro e defina as mairgens do ImageView paira a lairgura de borda desejada.

    Não é elegante, mas você sempre pode simplesmente desenhair um retângulo atrás dele, você já tem o código paira fazer isso e qualquer impacto no performance será imperceptível

    Você pode criair seu tairgetRectangle 20px mais lairgo e 20px superior

     RectF tairgetRect = new RectF(left, top, left + scaledWidth + 20, top + scaledHeight + 20); 

    e pinte o background branco

    Experimente isso, também adicionairá borda à sua canvas

      canvas.drawLine(0, 0, canvas.getWidth(), 0, paint2); canvas.drawLine(0, 0, 0, canvas.getHeight(), paint2); canvas.drawLine(0, canvas.getHeight(), canvas.getWidth(), canvas.getHeight(), paint2); canvas.drawLine(canvas.getWidth(), 0, canvas.getWidth(), canvas.getHeight(), paint2); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.