Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d68b21d2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "MTP: Add thumbnail generation for JPG" am: 5aac2c84

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1657579

Change-Id: I5b48ef9dd06402401ad806ad28138ee35d222206
parents 36a95aa8 5aac2c84
Loading
Loading
Loading
Loading
+15 −3
Original line number Original line Diff line number Diff line
@@ -821,8 +821,10 @@ public class MtpDatabase implements AutoCloseable {
            ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
            ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteStream);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteStream);


            if (byteStream.size() > MAX_THUMB_SIZE)
            if (byteStream.size() > MAX_THUMB_SIZE) {
                Log.w(TAG, "getThumbnailProcess: size=" + byteStream.size());
                return null;
                return null;
            }


            byte[] byteArray = byteStream.toByteArray();
            byte[] byteArray = byteStream.toByteArray();


@@ -852,7 +854,15 @@ public class MtpDatabase implements AutoCloseable {
                    outLongs[0] = thumbOffsetAndSize != null ? thumbOffsetAndSize[1] : 0;
                    outLongs[0] = thumbOffsetAndSize != null ? thumbOffsetAndSize[1] : 0;
                    outLongs[1] = exif.getAttributeInt(ExifInterface.TAG_PIXEL_X_DIMENSION, 0);
                    outLongs[1] = exif.getAttributeInt(ExifInterface.TAG_PIXEL_X_DIMENSION, 0);
                    outLongs[2] = exif.getAttributeInt(ExifInterface.TAG_PIXEL_Y_DIMENSION, 0);
                    outLongs[2] = exif.getAttributeInt(ExifInterface.TAG_PIXEL_Y_DIMENSION, 0);
                    if (exif.getThumbnailRange() != null) {
                        if ((outLongs[0] == 0) || (outLongs[1] == 0) || (outLongs[2] == 0)) {
                            Log.d(TAG, "getThumbnailInfo: check thumb info:"
                                    + thumbOffsetAndSize[0] + "," + thumbOffsetAndSize[1]
                                    + "," + outLongs[1] + "," + outLongs[2]);
                        }

                        return true;
                        return true;
                    }
                } catch (IOException e) {
                } catch (IOException e) {
                    // ignore and fall through
                    // ignore and fall through
                }
                }
@@ -885,6 +895,8 @@ public class MtpDatabase implements AutoCloseable {
            case MtpConstants.FORMAT_JFIF:
            case MtpConstants.FORMAT_JFIF:
                try {
                try {
                    ExifInterface exif = new ExifInterface(path);
                    ExifInterface exif = new ExifInterface(path);

                    if (exif.getThumbnailRange() != null)
                        return exif.getThumbnail();
                        return exif.getThumbnail();
                } catch (IOException e) {
                } catch (IOException e) {
                    // ignore and fall through
                    // ignore and fall through
+3 −2
Original line number Original line Diff line number Diff line
@@ -271,9 +271,10 @@ public class MtpDatabaseTest {


        Log.d(TAG, "testMtpDatabaseThumbnail: Test bad JPG");
        Log.d(TAG, "testMtpDatabaseThumbnail: Test bad JPG");


        testThumbnail(handleJpgBadThumb, jpgfileBadThumb, false);
// Now we support to generate thumbnail if embedded thumbnail is corrupted or not existed
        testThumbnail(handleJpgBadThumb, jpgfileBadThumb, true);


        testThumbnail(handleJpgNoThumb, jpgFileNoThumb, false);
        testThumbnail(handleJpgNoThumb, jpgFileNoThumb, true);


        testThumbnail(handleJpgBad, jpgfileBad, false);
        testThumbnail(handleJpgBad, jpgfileBad, false);