Add following codes in settings.gradle
dependencyResolutionManagement {
repositories {
maven {
url = uri("https://maven.pkg.github.com/Cryolitia/BurstLinker")
credentials {
username = "Cryolitia"
password = "9sb2n1ZvKGNMSzXqd0vIxX4nJJuRQHMOc3pf_phg".reverse()
}
}
//other repositories……
}
}
use implementation("com.bilibili:burstlinker:0.0.13")
in dependencies
Then, just enjoy it! ^_^
Idea from: square/gifencoder
BurstLinker is a simple C++ GIF encode library.
Gradle:
implementation 'com.bilibili:burst-linker:latest-version'
Android Studio 3.4.1
NDK r20
int delayMs = 1000;
String filePath = getCacheDir() + File.separator + "out.gif";
BurstLinker burstLinker = new BurstLinker();
try {
burstLinker.init(width, height, filePath);
Bitmap colorBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(colorBitmap);
Paint p = new Paint();
int[] colors = new int[]{0xFFF00000, 0xFFFFFF00, 0xFFFFFFFF};
for (int color : colors) {
p.setColor(color);
canvas.drawRect(0, 0, width, height, p);
burstLinker.connect(colorBitmap, BurstLinker.OCTREE_QUANTIZER,
BurstLinker.NO_DITHER, 0, 0, delayMs);
}
} catch (GifEncodeException e) {
e.printStackTrace();
} finally {
burstLinker.release();
}
This is an untested feature.
- Choose the Git branch "/feature/render-script".
- Sync Project with Gradle Files, It will generate the required file named "ScriptC_*.cpp".
- Uncomment the line 64 of the "/lib/CMakeLists.txt".
- Try this function.
-
Install CMake
- Mac
brew install cmake
- ArchLinux
sudo pacman -S cmake
- Mac
-
Build
cd /BurstLinker
mkdir cmake-build-debug; cd cmake-build-debug
cmake ..
make BurstLinker
-
Run
./BurstLinker 1000 1.jpg 2.jpg 3.jpg
- See the "out.gif"
-
Install Microsoft Visual Studio & CMake
-
Build
cd /BurstLinker
mkdir cmake-build-debug; cd cmake-build-debug
cmake ..
- Open the "BurstLinker.sln"
- Solution Explorer -> BurstLinker -> Build
-
Run
cd Debug
BurstLinker.exe 1000 1.jpg 2.jpg 3.jpg
- See the "out.gif"
- Original
- Uniform + No
- MedianCut + No
- KMeans + No
- Random + No
- Octree + No
- NeuQuant - 10 + No
- NeuQuant - 1 + No
- Octree + M2
- Octree + Bayer
- Octree + FloydSteinberg
- Original
-
Octree + No + Default
Display all Alpha channels greater than 0. (ARGB.a != 0)
-
Octree + No + Ignored translucency
Display only the Alpha channels equal to 255. (ARGB.a == 255)
Copyright 2018 Bilibili
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.