Нестатический метод 'compress (android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream)' не может быть ссылкой из статического контекста. - PullRequest
0 голосов
/ 03 сентября 2018

Я попытался сжать свое изображение в приложении для Android с помощью:

Bitmap.compress(Bitmap.CompressFormat.JPEG, 40, byteArrayOutputStream);

Но я получаю вышеуказанную ошибку. Каков наилучший способ сделать это без ошибки?

1 Ответ

0 голосов
/ 03 сентября 2018

Метод compress() из Bitmap является «методом экземпляра» (в отличие от «статического метода»). Это означает, что он должен вызываться для реального существующего объекта Bitmap, а не для самого класса Bitmap.

Другими словами:

Bitmap uncompressed = /* some bitmap you've gotten from somewhere */
ByteArrayOutputStream out = new ByteArrayOutputStream();
uncompressed.compress(..., out);
Bitmap compressed = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));

Здесь вы вызываете compress() для uncompressed экземпляра растрового изображения.

На некотором уровне это имеет интуитивный смысл. Если бы вы могли просто написать:

Bitmap compressed = Bitmap.compress(...);

Тогда вам нужно спросить себя: что вы сжимаете?

...