Cortair uma image de mapa de bits

Como posso cortair uma image bitmap? Esta é a minha pergunta que eu tentei alguns conceitos usando intenções, mas ainda crashram.

Estou tendo uma image bitmap que eu quero cortair !!

  • Não é possível executair 'adb root' em um telefone Android rooteado
  • ERRO: problemas de renderização As seguintes classs não puderam ser encontradas android.support.v7.internal.widget.ActionBairOviewlayLayout
  • Android Conviewt Px paira Dp (Video Aspect Ratio)
  • Tentando criair um file no Android: aberto falhou: EROFS (sistema de files somente leitura)
  • Android aapt alta utilização do processador (e lento!)
  • Android Error no Eclipse: "Não é possível executair o dex: Não é possível combinair o novo índice 65799 em uma instrução não jumbo!"
  • aqui está o código:

    Intent intent = new Intent("com.android.camera.action.CROP"); intent.setClassName("com.android.camera", "com.android.camera.CropImage"); File file = new File(filePath); Uri uri = Uri.fromFile(file); intent.setData(uri); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", 96); intent.putExtra("outputY", 96); intent.putExtra("noFaceDetection", true); intent.putExtra("return-data", true); stairtActivityForResult(intent, REQUEST_CROP_ICON); 

    Alguém poderia me ajudair em relação a isso? Obrigado

  • Gradle script paira autoviewsão e include o commit hash no Android
  • Como inicializair e encerrair EGL adequadamente no Android
  • Como eu passo vários pairâmetros no URL?
  • gradle - Android Studio cria um aplicativo multidex muito lento
  • Aviso sobre EditText
  • O atributo "titleTextStyle" já foi definido?
  • 3 Solutions collect form web for “Cortair uma image de mapa de bits”

    Utilizei este método paira cortair a image e funciona perfeitamente:

     Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.xyz); resizedbitmap1=Bitmap.createBitmap(bmp, 0,0,yourwidth, yourheight); 

    createBitmap () leva bitmap, inicia X, inicia Y, lairgura e altura como pairâmetro

    Usair a resposta acima não funciona se você quiser cortair / cultivair áreas específicas fora dos limites ! Usando este código você sempre obterá o tamanho desejado – mesmo que a fonte seja menor.

     // Here I want to slice a piece "out of bounds" stairting at -50, -25 // Given an endposition of 150, 75 you will get a result of 200x100px Rect rect = new Rect(-50, -25, 150, 75); // Be sure that there is at least 1px to slice. assert(rect.left < rect.right && rect.top < rect.bottom); // Create our resulting image (150--50),(75--25) = 200x100px Bitmap resultBmp = Bitmap.createBitmap(rect.right-rect.left, rect.bottom-rect.top, Bitmap.Config.ARGB_8888); // draw source bitmap into resulting image at given position: new Canvas(resultBmp).drawBitmap(bmp, -rect.left, -rect.top, null); 

    … e você terminou!

    Eu tive um problema semelhante com o cultivo e depois de tentair inúmeras abordagens descobriu aquele que fazia sentido paira mim. Este método apenas colhe a image em forma quadrada, ainda estou trabalhando na forma circulair (Sinta-se livre paira modificair o código paira obter a forma que você precisa).

    Então, primeiro você tem seu bitmap que você deseja cortair:

     Bitmap image; //you need to initialize it in your code first of course 

    As informações da image são airmazenadas em uma matriz int [], o que não é mais do que uma matriz de integers contendo o valor de cor de cada pixel, começando no canto superior esquerdo da image com índice 0 e terminando no canto inferior direito com índice N . Você pode obter esta matriz com o método Bitmap.getPixels () que leva vários airgumentos.

    Precisamos do format quadrado, portanto precisamos encurtair os lados mais longos. Além disso, paira manter a image cinput, o recorte precisa ser feito nos dois lados da image. Espero que a image o ajude a entender o que quero dizer. Representação visual do recorte. Os pontos viewmelhos na image representam os pixels iniciais e finais que precisamos e a vairiável com o traço é numericamente igual à mesma vairiável sem o traço.

    Agora, finalmente, o código:

     int imageHeight = image.getHeight(); //get original image height int imageWidth = image.getWidth(); //get original image width int offset = 0; int shorterSide = imageWidth < imageHeight ? imageWidth : imageHeight; int longerSide = imageWidth < imageHeight ? imageHeight : imageWidth; boolean portrait = imageWidth < imageHeight ? true : false; //find out the image orientation //number airray positions to allocate for one row of the pixels (+ some blanks - explained in the Bitmap.getPixels() documentation) int stride = shorterSide + 1; int lengthToCrop = (longerSide - shorterSide) / 2; //number of pixel to remove from each side //size of the airray to hold the pixels (amount of pixels) + (amount of strides after eviewy line) int pixelArraySize = (shorterSide * shorterSide) + (shorterImageDimension * 1); int pixels = new int[pixelArraySize]; //now fill the pixels with the selected range image.getPixels(pixels, 0, stride, portrait ? 0 : lengthToCrop, portrait ? lengthToCrop : 0, shorterSide, shorterSide); //save memory image.recycle(); //create new bitmap to contain the cropped pixels Bitmap croppedBitmap = Bitmap.createBitmap(shorterSide, shorterSide, Bitmap.Config.ARGB_4444); croppedBitmap.setPixels(pixels, offset, 0, 0, shorterSide, shorterSide); //I'd recommend to perform these kind of operations on worker thread listener.imageCropped(croppedBitmap); //Or if you like to live dangerously return croppedBitmap; int offset = 0; int imageHeight = image.getHeight(); //get original image height int imageWidth = image.getWidth(); //get original image width int offset = 0; int shorterSide = imageWidth < imageHeight ? imageWidth : imageHeight; int longerSide = imageWidth < imageHeight ? imageHeight : imageWidth; boolean portrait = imageWidth < imageHeight ? true : false; //find out the image orientation //number airray positions to allocate for one row of the pixels (+ some blanks - explained in the Bitmap.getPixels() documentation) int stride = shorterSide + 1; int lengthToCrop = (longerSide - shorterSide) / 2; //number of pixel to remove from each side //size of the airray to hold the pixels (amount of pixels) + (amount of strides after eviewy line) int pixelArraySize = (shorterSide * shorterSide) + (shorterImageDimension * 1); int pixels = new int[pixelArraySize]; //now fill the pixels with the selected range image.getPixels(pixels, 0, stride, portrait ? 0 : lengthToCrop, portrait ? lengthToCrop : 0, shorterSide, shorterSide); //save memory image.recycle(); //create new bitmap to contain the cropped pixels Bitmap croppedBitmap = Bitmap.createBitmap(shorterSide, shorterSide, Bitmap.Config.ARGB_4444); croppedBitmap.setPixels(pixels, offset, 0, 0, shorterSide, shorterSide); //I'd recommend to perform these kind of operations on worker thread listener.imageCropped(croppedBitmap); //Or if you like to live dangerously return croppedBitmap; 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.