Comments (5)
Hi @ganfra. Can you share the full error stacktrace?
Can you also check what happens if you use SubSamplingImage()
directly with your URI?
val zoomableState = rememberZoomableState()
val imageState = rememberSubSamplingImageState(
zoomableState = zoomableState,
imageSource = ImageSource.contentUri(…)
)
SubSamplingImage(
modifier = Modifier
.fillMaxSize()
.zoomable(zoomableState),
state = imageState,
contentDescription = …,
)
from telephoto.
Hi, sorry for the late reply.
Here is the stacktrace :
0 = {StackTraceElement@30479} "android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2013)"
1 = {StackTraceElement@30480} "android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1842)"
2 = {StackTraceElement@30481} "android.content.ContentResolver.openInputStream(ContentResolver.java:1518)"
3 = {StackTraceElement@30482} "me.saket.telephoto.subsamplingimage.UriImageSource.decoder(SubSamplingImageSource.kt:136)"
4 = {StackTraceElement@30483} "me.saket.telephoto.subsamplingimage.internal.AndroidImageRegionDecoder$Companion$Factory$1.create(AndroidImageRegionDecoder.kt:47)"
5 = {StackTraceElement@30484} "me.saket.telephoto.subsamplingimage.internal.PooledImageRegionDecoder$Companion$Factory$1$create$decoders$1.invokeSuspend(PooledImageRegionDecoder.kt:52)"
6 = {StackTraceElement@30485} "kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)"
7 = {StackTraceElement@30486} "kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)"
8 = {StackTraceElement@30487} "kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)"
9 = {StackTraceElement@30488} "kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)"
10 = {StackTraceElement@30489} "kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)"
11 = {StackTraceElement@30490} "kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)"
And yes, it fails the same way using directly SubSamplingImage
And this is expected, because ContentResolver.openInputStream
only works with those defined schemes:
* <h5>Accepts the following URI schemes:</h5>
* <ul>
* <li>content ({@link #SCHEME_CONTENT})</li>
* <li>android.resource ({@link #SCHEME_ANDROID_RESOURCE})</li>
* <li>file ({@link #SCHEME_FILE})</li>
The URI I provide doesn't contain any scheme.
Like I said, Coil fixes this with his FileUriMapper
.
from telephoto.
Gotcha. I don't mind supporting this, but is there a reason you're not specifying the file scheme? What's the benefit of writing "/path/to/file.jpg"
instead of "file:///path/to/file.jpg"
?
from telephoto.
I can also try to convert my path to a uri at some point instead, of course.
It was more a question about having "parity" treatment with regular AsyncImage
, but it's up to you :P
I let you close the issue.
from telephoto.
Yea that's a fair point. Regardless of their validity, I will probably have to support them if ZoomableAsyncImage
aims to be a drop-in. Let me sleep on this.
from telephoto.
Related Issues (20)
- Restricting Zoom and Scroll Direction (X/Y Axis Only) and Callback for Current ZoomableState Updates. HOT 3
- Difficult to zoom inside pager HOT 8
- Ability to view image edges in the center of the screen HOT 3
- Unable to capture bitmap from ZoomableAsyncImage composable HOT 9
- Better zoom gestures HOT 13
- Please provide a way to change zoom and offset programatically HOT 7
- Coil returned a null cache snapshot HOT 4
- Telephoto internal NPE HOT 7
- Incorrect fling velocity on zoom gesture end with Compose 1.7.0-alpha02 HOT 1
- Zoomable modifier looses state after ZoomableState gets disposed and recreated HOT 12
- Allow disabling "Double tap to zoom" & "Pinch to zoom" separately HOT 2
- Content padding HOT 2
- Keyboard support HOT 1
- IllegalStateException: maximumVelocity should be a positive value HOT 16
- IllegalStateException: Coil returned a null cache snapshot HOT 5
- Gif Not Working HOT 5
- Individual Zoom for Canvas Rectangles using rememberZoomState. HOT 2
- Add mouse wheel zoom support HOT 3
- Different double tap/zoom functionality HOT 1
- Need SubsamplingScaleImageView.visibleFileRect(Rect fRect) analog HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from telephoto.