繁体   English   中英

在Android NDK中使用pngquant lib(libimagequant)

[英]Use pngquant lib (libimagequant) in Android NDK

我试图在OS X上使用NDK r10(64位)在Android项目中使用pngquant.org/lib中的png量化库。

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

LOCAL_C_INCLUDES := $(NDK_TOOLCHAIN)/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9/include

但这无济于事。

我会对包含pngquant的空白Android项目非常感兴趣。

任何帮助都非常感谢。

注意:很抱歉更改问题,但是我提出的原始问题中包含一些不正确的事实。

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

在为Android进行构建时,由于您要针对多个架构,并且工具链有些复杂,因此最好使用NDK中的ndk-build脚本。

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

原始库使用的是configure脚本,但我没有重写这些库,而是改写了NDK Makefiles,以使用相同的cflag(openmp,sse ...)直接编译所有lib源代码。

Android.mk:

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:= yourlib LOCAL_SRC_FILES:= yoursources.c LOCAL_C_INCLUDES:= pngquant / lib LOCAL_SHARED_LIBRARIES:= imagequant

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库 ,可以满足您的目的。

在您的build.gradle中:

dependencies {
    compile 'com.ndahlquist:pngquant-android:0.2'
}

在您的Android应用中:

File inputPngFile = getYourPng();
File outputPngFile = getOutputFile()
new LibPngQuant().pngQuantFile(inputFile, outputFile);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM