1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Preciso reduzir a qualidade de uma foto no aplicativo

Senhores, Estou desenvolvendo um aplicativo que ira tirar fotos e preciso enviar essas fotos para um servidor.... Então preciso que o aplicativo reduza o tamanho da do arquivo de foto para que seja possível enviar esse arquivo para o servidor sem que o trafego fique sobrecarregado.

Atualmente estou usando esse código abaixo: O problema dele e que ou ele mantem a foto original ou ele reduz tanto a qualidade que se tirar a foto de um texto vc não consegue ler, preciso que o arquivo fique em torno de 1 a 2mb.

public static Bitmap createScaledBitmapMaxSize(Context context, Uri uri, int maxSize) {

int outWidth; int outHeight; try { Bitmap bitmap = rotateByteArrayToBitmap(context, uri);

int inWidth = bitmap.getWidth(); int inHeight = bitmap.getHeight();

if (inWidth > inHeight) { outWidth = maxSize; outHeight = (inHeight maxSize) / inWidth; } else { outHeight = maxSize; outWidth = (inWidth maxSize) / inHeight; }

bitmap = Bitmap.createScaledBitmap(bitmap, outWidth, outHeight, true);

ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100 /ignored for PNG/, bos); byte[] bitmapdata = bos.toByteArray();

FileOutputStream fos = new FileOutputStream(pathAnexoFile(Constantes.FOTO_NAME_DEFAULT, Constantes.EXTENCAO_JPGE)); fos.write(bitmapdata); fos.flush(); fos.close();

return BitmapFactory.decodeByteArray(bitmapdata,0,bitmapdata.length); } catch (Exception e) { e.printStackTrace(); } return null; }



public boolean compress(CompressFormat format, int quality, OutputStream stream) {
        checkRecycled("Can't compress a recycled bitmap");
        // do explicit check before calling the native method
        if (stream == null) {
            throw new NullPointerException();
        }
        if (quality < 0 || quality > 100) {
            throw new IllegalArgumentException("quality must be 0..100");
        }
        StrictMode.noteSlowCall("Compression of a bitmap is slow");
        Trace.traceBegin(Trace.TRACE_TAG_RESOURCES, "Bitmap.compress");
        boolean result = nativeCompress(mNativePtr, format.nativeInt,
                quality, stream, new byte[WORKING_COMPRESS_STORAGE]);
        Trace.traceEnd(Trace.TRACE_TAG_RESOURCES);
        return result;
    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags android java mobile ou faça a sua própria pergunta.