首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android NDK中使用pngquant lib (libimagequant)

在Android NDK中使用pngquant lib (libimagequant)
EN

Stack Overflow用户
提问于 2014-08-04 18:09:43
回答 2查看 742关注 0票数 1

我正尝试在我的安卓项目中使用pngquant.org/lib上的png量化库,使用的是OS上的NDK r10 (64位)。

我在编译这个库方面正在取得进展。我现在遇到的问题是size_t类型无法解决。我尝试包含以下文件夹:

代码语言:javascript
复制
LOCAL_C_INCLUDES := $(NDK_TOOLCHAIN)/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9/include

但这无济于事。

我真的会对一个包含pngquant的空的Android项目感兴趣。

任何帮助都是非常感谢的。

很抱歉更改了问题,但我最初问的问题中有一些不正确的事实。

EN

回答 2

Stack Overflow用户

发布于 2014-08-06 22:28:59

我没有足够的信息来直接解决您的特定问题,您是否正在尝试使用独立的工具链?

在为Android构建时,由于您有多个架构可供选择,并且工具链有点复杂,因此最好使用NDK中的ndk-build脚本。

我在这里创建了一个项目,您可以将其集成到您的安卓项目目录中:https://github.com/android-native-libraries/pngquant-android

原始库使用的是配置脚本,但我没有扩展这些脚本,而是重写了NDK Makefile,以直接编译所有的lib源代码,并使用相同的cflag (openmp,sse...)

Android.mk:

代码语言:javascript
复制
LOCAL_PATH := $(call my-dir)

SRC_PATH := pngquant/lib

include $(CLEAR_VARS)
LOCAL_MODULE := imagequant
LOCAL_SRC_FILES := \
    $(SRC_PATH)/blur.c \
    $(SRC_PATH)/libimagequant.c \
    $(SRC_PATH)/mediancut.c \
    $(SRC_PATH)/mempool.c \
    $(SRC_PATH)/nearest.c \
    $(SRC_PATH)/pam.c \
    $(SRC_PATH)/viter.c 

LOCAL_C_INCLUDES := pngquant/lib

LOCAL_CFLAGS += -O3 -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall -std=c99 -fopenmp
LOCAL_LDFLAGS += -fopenmp

ifeq ($(TARGET_ARCH_ABI),x86)
    LOCAL_CFLAGS += -mtune=atom -msse -mfpmath=sse -mssse3 -DUSE_SSE=1
endif

include $(BUILD_SHARED_LIBRARY)

您可以扩展此Android.mk文件,以使用libimagequant添加您自己的本地库: include $(CLEAR_VARS) LOCAL_MODULE :=您的lib LOCAL_SRC_FILES :=您的源。c LOCAL_C_INCLUDES := pngquant/lib LOCAL_SHARED_LIBRARIES := imagequant

代码语言:javascript
复制
LOCAL_CFLAGS += -O3 -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall -std=c99 -fopenmp
LOCAL_LDFLAGS += -fopenmp

ifeq ($(TARGET_ARCH_ABI),x86)
    LOCAL_CFLAGS += -mtune=atom -msse -mfpmath=sse -mssse3 -DUSE_SSE=1
endif

include $(BUILD_SHARED_LIBRARY)
票数 0
EN

Stack Overflow用户

发布于 2015-07-27 06:18:41

如果你只想在默认设置下使用这个库,我已经做了一个simple Android library,它可能适合你的目的。

在您的build.gradle中:

代码语言:javascript
复制
dependencies {
    compile 'com.ndahlquist:pngquant-android:0.2'
}

在你的Android应用中:

代码语言:javascript
复制
File inputPngFile = getYourPng();
File outputPngFile = getOutputFile()
new LibPngQuant().pngQuantFile(inputFile, outputFile);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25116305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档