Попробуйте это как временное решение:
Сначала добавьте следующий класс:
public static class PlurkInputStream extends FilterInputStream {
protected PlurkInputStream(InputStream in) {
super(in);
}
@Override
public int read(byte[] buffer, int offset, int count)
throws IOException {
int ret = super.read(buffer, offset, count);
for ( int i = 2; i < buffer.length; i++ ) {
if ( buffer[i - 2] == 0x2c && buffer[i - 1] == 0x05
&& buffer[i] == 0 ) {
buffer[i - 1] = 0;
}
}
return ret;
}
}
Затем оберните исходный поток с помощью PlurkInputStream:
Bitmap bitmap = BitmapFactory.decodeStream(new PlurkInputStream(originalInputStream));
Позвольте мнезнать, поможет ли это вам.
РЕДАКТИРОВАТЬ:
Извините, пожалуйста, попробуйте следующую версию вместо:
for ( int i = 6; i < buffer.length - 4; i++ ) {
if ( buffer[i] == 0x2c ) {
if ( buffer[i + 2] == 0 && buffer[i + 1] > 0
&& buffer[i + 1] <= 48 ) {
buffer[i + 1] = 0;
}
if ( buffer[i + 4] == 0 && buffer[i + 3] > 0
&& buffer[i + 3] <= 48 ) {
buffer[i + 3] = 0;
}
}
}
Обратите внимание, что это не эффективный коди это не полное / правильное решение.Это будет работать в большинстве случаев, но не во всех.