Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[image_picker_android] Improved Bitmap resize on Android #3423

Merged
merged 19 commits into from
May 10, 2023
Merged

[image_picker_android] Improved Bitmap resize on Android #3423

merged 19 commits into from
May 10, 2023

Conversation

beroso
Copy link
Contributor

@beroso beroso commented Mar 8, 2023

Improves Bitmap load and resize on Android.

Original PR on flutter/plugins: flutter/plugins#6947

Issue: flutter/flutter#118383

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [relevant style guides] and ran [the auto-formatter]. (Unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
  • I signed the [CLA].
  • The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
  • I listed at least one issue that this PR fixes in the description above.
  • I updated pubspec.yaml with an appropriate new version according to the [pub versioning philosophy], or this PR is [exempt from version changes].
  • I updated CHANGELOG.md to add a description of the change, [following repository CHANGELOG style].
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • All existing and new tests are passing.

@gmackall
Copy link
Member

Re-requesting review from @tarrinneal and @stuartmorgan as you were both requested on the previous version of this PR.

@tarrinneal
Copy link
Contributor

Have you run any benchmarks to see if/how much this is better than the old behaviour?

@beroso beroso requested review from stuartmorgan and removed request for gmackall and tarrinneal March 21, 2023 10:56
@beroso
Copy link
Contributor Author

beroso commented Mar 21, 2023

Sorry, guys. I clicked on "request review" button on @stuartmorgan requested changes, and accidentally removed @gmackall and @tarrinneal from review. It wasn't on purpose.

@beroso
Copy link
Contributor Author

beroso commented Mar 21, 2023

Have you run any benchmarks to see if/how much this is better than the old behaviour?

@tarrinneal , I just ran manual tests. I didn't do any benchmark test to compare the performance.

Before I tried to pick an 12000 x 9000 px, ~10MB image using the example app and it crashed due to an OutOfMemory error (even when the resize was not necessary).

This patch skips Bitmap decoding when resize or quality changes are not needed. Plus it can improve the resize process by subsampling image decoding depending on the maximum requested dimension.

Do you have any tips on how to benchmark it?

Copy link
Contributor

@tarrinneal tarrinneal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a little nit for the changelog, tagging @stuartmorgan for second review.

@reidbaker
Copy link
Contributor

@beroso is this something you still plan on working on?

Copy link
Contributor

@stuartmorgan stuartmorgan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@stuartmorgan stuartmorgan added the autosubmit Merge PR when tree becomes green via auto submit App label May 10, 2023
@auto-submit auto-submit bot merged commit a1929a6 into flutter:main May 10, 2023
@beroso
Copy link
Contributor Author

beroso commented May 10, 2023

Thank you all for the support!

By the way, the release job is running for about 4 hours. Is it normal?

@stuartmorgan
Copy link
Contributor

No, release was completely broken by the 3.10 release, it turns out. I manually released it for now.

engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request May 15, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request May 15, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request May 15, 2023
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request May 15, 2023
flutter/packages@6328cfb...6608b60

2023-05-15 stuartmorgan@google.com [ci] Remove unnecessary Linux libraries (flutter/packages#3975)
2023-05-15 stuartmorgan@google.com [ci] Enforce a minimum Kotlin version in examples (flutter/packages#3979)
2023-05-15 stuartmorgan@google.com [ci] Disable Windows repo tool tests (flutter/packages#3980)
2023-05-12 stuartmorgan@google.com [ci] Add LUCI repo tool tests (flutter/packages#3964)
2023-05-12 reidbaker@google.com [url_launcher] Set broadcast reciever visability as required by target api 34 (flutter/packages#3973)
2023-05-12 reidbaker@google.com Update build.gradle with a comment explaining version (flutter/packages#3972)
2023-05-12 engine-flutter-autoroll@skia.org Roll Flutter from 8c5a1ea to a76dbe4 (12 revisions) (flutter/packages#3958)
2023-05-12 stuartmorgan@google.com [image_picker] Fix Android lints (flutter/packages#3887)
2023-05-12 stuartmorgan@google.com [various] Update minimum Flutter version to 3.3 (flutter/packages#3967)
2023-05-12 stuartmorgan@google.com [tool] Target specific Android unit tests (flutter/packages#3955)
2023-05-12 34871572+gmackall@users.noreply.github.com [camerax] Add a dependency on kotlin-bom to align versions of kotlin-stdlib (flutter/packages#3960)
2023-05-12 stuartmorgan@google.com [local_auth] Improve iOS test DI (flutter/packages#3959)
2023-05-12 stuartmorgan@google.com [ci] Ensure scripts fail if a command fails (flutter/packages#3963)
2023-05-11 stuartmorgan@google.com [ci] Pin the Flutter version for `release` (flutter/packages#3965)
2023-05-11 tarrinneal@gmail.com [video_player] foundation - reduce seek accuracy to fix seek to end bug (flutter/packages#3784)
2023-05-11 stuartmorgan@google.com [image_picker] Fix use_build_context_synchronously violations (flutter/packages#3969)
2023-05-11 stuartmorgan@google.com [tool] Ensure that publish credential path is available (flutter/packages#3970)
2023-05-11 63286031+ahmednfwela@users.noreply.github.com [go_router] change `fix_data.yaml` uris to be absolute to fix lints (flutter/packages#3877)
2023-05-11 stuartmorgan@google.com [tool] Use new pub cache location for publish (flutter/packages#3962)
2023-05-10 engine-flutter-autoroll@skia.org Roll Flutter (stable) from f72efea to 84a1e90 (1920 revisions) (flutter/packages#3961)
2023-05-10 andrelvsousa@gmail.com [image_picker_android] Improved Bitmap resize on Android (flutter/packages#3423)
2023-05-10 43054281+camsim99@users.noreply.github.com [camerax] Add Kotlin duplicate classes known error to README.md (flutter/packages#3957)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
CaseyHillers pushed a commit to CaseyHillers/flutter that referenced this pull request May 24, 2023
flutter/packages@6328cfb...6608b60

2023-05-15 stuartmorgan@google.com [ci] Remove unnecessary Linux libraries (flutter/packages#3975)
2023-05-15 stuartmorgan@google.com [ci] Enforce a minimum Kotlin version in examples (flutter/packages#3979)
2023-05-15 stuartmorgan@google.com [ci] Disable Windows repo tool tests (flutter/packages#3980)
2023-05-12 stuartmorgan@google.com [ci] Add LUCI repo tool tests (flutter/packages#3964)
2023-05-12 reidbaker@google.com [url_launcher] Set broadcast reciever visability as required by target api 34 (flutter/packages#3973)
2023-05-12 reidbaker@google.com Update build.gradle with a comment explaining version (flutter/packages#3972)
2023-05-12 engine-flutter-autoroll@skia.org Roll Flutter from 8c5a1ea to a76dbe4 (12 revisions) (flutter/packages#3958)
2023-05-12 stuartmorgan@google.com [image_picker] Fix Android lints (flutter/packages#3887)
2023-05-12 stuartmorgan@google.com [various] Update minimum Flutter version to 3.3 (flutter/packages#3967)
2023-05-12 stuartmorgan@google.com [tool] Target specific Android unit tests (flutter/packages#3955)
2023-05-12 34871572+gmackall@users.noreply.github.com [camerax] Add a dependency on kotlin-bom to align versions of kotlin-stdlib (flutter/packages#3960)
2023-05-12 stuartmorgan@google.com [local_auth] Improve iOS test DI (flutter/packages#3959)
2023-05-12 stuartmorgan@google.com [ci] Ensure scripts fail if a command fails (flutter/packages#3963)
2023-05-11 stuartmorgan@google.com [ci] Pin the Flutter version for `release` (flutter/packages#3965)
2023-05-11 tarrinneal@gmail.com [video_player] foundation - reduce seek accuracy to fix seek to end bug (flutter/packages#3784)
2023-05-11 stuartmorgan@google.com [image_picker] Fix use_build_context_synchronously violations (flutter/packages#3969)
2023-05-11 stuartmorgan@google.com [tool] Ensure that publish credential path is available (flutter/packages#3970)
2023-05-11 63286031+ahmednfwela@users.noreply.github.com [go_router] change `fix_data.yaml` uris to be absolute to fix lints (flutter/packages#3877)
2023-05-11 stuartmorgan@google.com [tool] Use new pub cache location for publish (flutter/packages#3962)
2023-05-10 engine-flutter-autoroll@skia.org Roll Flutter (stable) from f72efea to 84a1e90 (1920 revisions) (flutter/packages#3961)
2023-05-10 andrelvsousa@gmail.com [image_picker_android] Improved Bitmap resize on Android (flutter/packages#3423)
2023-05-10 43054281+camsim99@users.noreply.github.com [camerax] Add Kotlin duplicate classes known error to README.md (flutter/packages#3957)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
nploi pushed a commit to nploi/packages that referenced this pull request Jul 16, 2023
Improves Bitmap load and resize on Android.

Original PR on flutter/plugins: flutter/plugins#6947

Issue: flutter/flutter#118383
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App p: image_picker platform-android
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants