Comments (8)
Hi, hope I didn't keep you waiting for long, made a 0.5.0-rc0 release that should contain a fix for this.
The library can now read from anything that implements Bufread
+ Seek
as long as the std
feature is enabled. This is usually enabled by default so the only thing that changes is bumping up the dependency and fixing some breaking changes
from image.
The dev
branch contains the changes already, still doing some benchmarks and fuzz testing to see the impact of the changes, then a 0.5 rc release is planned, (but want to see if i can get some perf changes before then hence why I've been delaying)
from image.
Created #2198 to try out the new release
from image.
Save as JPEG does not meet the expectations. The following is a duplication code.
use image;
fn main() {
let im = image::open("input.png").unwrap();
im.save("output.jpeg").unwrap();
}
from image.
@nashaofu This is an issue thread for a specific concern about memory use in the JPEG decoder, while the issue you're reporting looks like it might be caused by #2173. Please feel free to create a new issue if the fix suggested in that thread doesn't work
from image.
@djc This is currently necessary due to an API mismatch between image
and zune-jpeg
(the crate we use for JPEG decoding). In the image
crate, our fancier decoders take a BufRead + Seek
implementation, but zune-jpeg
requires a ZReaderTrait
impl that can essentially only be a &[u8]
, Vec<u8>
or similar (specifically notice that the required methods take shared references so the type cannot have interior mutability).
Tagging @etemesi254 because I believe they are currently working on changing how zune-image handles stream reading
from image.
Hi, I changed it to allow it to take anything that implements a different trait, we do have stream decoding now, but because of Rust's lack of specialization, I can't blanket it to allow a it to decode BufRead+Seek
.
It's currently specialized on some common types such as Buffered files, std io cursor and in memory buffers, wrapped with (a ZCursor
which is a std::io::Cursor
reimpl that works in no-std
environments).
This is a breaking change tho, but it makes it easy to add a separate impl that allows Bufread + Seek
maybe something like
struct ZBufReadSeeker<T:BufRead + Seek>{
source: T
}
impl<T:BufRead + Seek> ZByteReaderTrait for ZBufReadSeeker<T>{
}
from image.
@etemesi254 great to hear this is being addressed -- I think your solution makes sense. So I guess this is just a matter of waiting for these improvements to be released?
from image.
Related Issues (20)
- SVG image "format could not be determined" HOT 4
- JPG image first two bytes are not an SOI marker HOT 1
- Panic when checking broken tiff file HOT 1
- Freeze when trying to open and save jpg and webp files HOT 3
- Random crashes when decoding exr file HOT 2
- `image` still depends on `jpeg-decoder` through the `tiff` crate
- `rayon` is included in the dependency tree even when the `rayon` feature is disabled when `ravif` feature is enabled HOT 1
- The documentation on `crop()` is confusing HOT 1
- Add in-place versions of all rotation operations HOT 1
- `DynamicImage::crop()` is slow because `to_image()` is slow HOT 1
- Cropping API doesn't check bounds, easy to misuse HOT 7
- EnumeratePixels and EnumerateRows should implement DoubleEndedIterator HOT 3
- Implement a `rows()` iterator on `SubImage` HOT 6
- how to convert a rgbaImage to opencv's Mat?
- Regression: Hot lib reload, unable to find __rust_alloc. HOT 6
- Increased generation loss in JPEG encoder HOT 1
- Broken link in docs HOT 2
- Should the next major release be 1.0? HOT 2
- Detect alpha on jpeg HOT 2
- Alternate versions of the crates which allow regular breaking changes HOT 7
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 image.