Git Product home page Git Product logo

image's Introduction

Image

Image 是把图像数据放到 native heap 的 Android 图像库,可以降低 OutOfMemoryError 的出现概率。支持 JPEG,PNG(包括 apng)和 GIF(包括动态图)。

Image is an Android image library with data stored in native heap. JPEG, PNG(include apng) and GIF(include animated) supported.

Usage

在最外面的 build.gradle 里加上 jitpack,别加到 buildscript 里了。

Add jitpack repository in top build.gradle, DO NOT ADD IT TO buildscript.

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Single library

TODO: 中文翻译。 在项目 build.gradle 里添加 Image 依赖。

Image is available as a single library with all codecs included. Add Image as dependency in project build.gradle.

dependencies {
    ...
    compile 'com.github.seven332.Image:singlelib:0.3.0'
}

Multi library

TODO: 中文翻译。

Image is also available as multiple libraries. Include the core, then add on whichever codecs you need.

Note: If you need every image codec, use the single library release above.

dependencies {
    ...
    implementation 'com.github.seven332.Image:core:0.3.0'
    implementation 'com.github.seven332.Image:jpeg:0.3.0' // Optional
    implementation 'com.github.seven332.Image:png:0.3.0'  // Optional
    implementation 'com.github.seven332.Image:gif:0.3.0'  // Optional
}

License

Copyright (C) 2015-2018 Hippo Seven

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

image's People

Contributors

inorichi avatar msm595 avatar rubengees avatar seven332 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

image's Issues

New image structures

StaticImage and AnimatedImage are native-heap images. They will be removed. We need new image structures, both static and animated.

Add more color format support

ImageData and ImageRenderer are mostly used in openGL ES glCopyTexImage2D. glCopyTexImage2D support GL_ALPHA,GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, and GL_RGBA. So they should support four color format, grey, grey alpha, rgb and rgba.

Modular

Decoders consume too much disk space. Additional, Not every application needs all these decoders. There must be a way to select only the decoders in need.

This library should be separated into several libraries. One main library, the entry point. Several image-decoder libraries. Only the decoders in need are added as dependencies.

Decoders must be registered before the main .so file loaded. In the JNI_OnLoad() of the main .so file, use dlopen() to load the .so files for decoders, use dlsym() to create decoder instances.

Support interlaced PNG

First of all, thank you for this great library. I recently started using it as an additional image decoder in my project and I received today this issue.

I've been testing it and it seems BitmapDecoder doesn't support interlaced PNG (see screenshot in the linked issue). I've been reading through image_png.c but I can't find anything relevant.

Colors different compared to source image

Hi!

There is Tachiyomi application that uses this library for image decoding and I spotted a problem
inorichi/tachiyomi#589

When application uses this library for image decoding color tones go off for JPG images.

Can you please help?

Reduce the number of externalNativeBuilds

Only two externalNativeBuilds are enough. One is singleLib image and image-test. The other one is core image, image codecs, maybe and image-test. After building these shared libraries, copy them to the target gradle module.

It saves much build time if more codecs will be supported.

Progressive decoding

It's not the feature of progressive JPEG. It means showing newly decoded pixels as soon as possible.

If the source stream is a network stream, this feature improves user experience a lot. Showing the thumbnail first is another way. But this feature is better.

Buffer struct

Backup and buffer in JavaStream make the code hard to read. We can create a Buffer struct, which represent a memory block, to make the code more readable.

BufferStream should be renamed to RawStream.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.