我該怎麼辦我在Android上使用OpenJPEG? (我是「j2k_to_image」主要是想用)。
我想你告訴我怎麼寫一個makefile。 在此先感謝。
我該怎麼辦我在Android上使用OpenJPEG? (我是「j2k_to_image」主要是想用)。
我想你告訴我怎麼寫一個makefile。 在此先感謝。
我能夠使用以下大綱構建+使用OpenJPEG將JPEG2000圖像加載到我的應用程序中。你必須根據你的環境和你想如何使用它來定製它。我的回答提供了粗略的指導方針,以及我遇到的主要障礙(我的Android.mk和Application.mk文件應該是什麼,以及如何處理OpenJPEG庫需要cmake)的具體答案。
由於我們在談論OpenJPEG,因此這個答案假定您熟悉並計劃爲您的應用使用Android NDK。它還假定您正在使用Android IDE的Eclipse版本。答案還假定您熟悉靜態庫如何與Android NDK一起工作以及如何將它們引用到您的主應用程序中。您可以在下面擴展我的答案以創建共享庫或將代碼直接包含到您的應用程序中。如果你不熟悉這些先決條件,stackoverflow和谷歌可以提供幫助。
我使用Android NDK r8e和OpenJPEG 2.0.0獲得成功。
步驟:
就這樣,我就能夠JPEG2000圖像成功加載到我基於NDK,Android應用程序。
Application.mk:
APP_ABI := all
APP_PLATFORM := android-9
APP_MODULES := openjpeg
Android.mk(你將不得不自定義所有下面的路徑):
# Taken from https://stackoverflow.com/questions/4036191/sources-from-subdirectories-in-makefile
# The trailing slash is required.
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
ALL_CPPS := $(call rwildcard,../../openjpeg-2.0.0/src/lib/openjp2,*.c)
ALL_CPPS += $(call rwildcard,../../openjpeg-2.0.0/src/lib/openjpip,*.c)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := openjpeg
LOCAL_C_INCLUDES := /path/to/openjpeg-2.0.0/src/lib/openjp2
LOCAL_SRC_FILES := $(addprefix ../,$(ALL_CPPS))
LOCAL_CFLAGS = -DUSE_JPIP
include $(BUILD_STATIC_LIBRARY)
opj_config.h(通常爲的CMake平臺創建這個你重建 - 但正如我上面提到的,我不想處理cmake,所以我手工創建了這個文件):
#ifndef OPJ_CONFIG_H
#define OPJ_CONFIG_H
#define OPJ_PACKAGE_VERSION "2.0.0"
#define HAVE_INTTYPES_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STDINT_H 1
#ifndef HAVE_STDLIB_H // I had a conflict with this somewhere else in my project -- good form dictates that I should probably ifndef guard the other defines in this file as well....that is a TODO for later
#define HAVE_STDLIB_H 1
#endif
#define HAVE_STRINGS_H 1
#define HAVE_STRING_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_UNISTD_H 1
// I'm not utilizing libpng or libtiff, so don't set these
//#cmakedefine HAVE_LIBPNG @[email protected]
//#cmakedefine HAVE_PNG_H @[email protected]
//#cmakedefine HAVE_LIBTIFF @[email protected]
//#cmakedefine HAVE_TIFF_H @[email protected]
#define HAVE_SSIZE_T 1
//#cmakedefine _LARGEFILE_SOURCE
//#cmakedefine _LARGE_FILES
//#cmakedefine _FILE_OFFSET_BITS @[email protected]
#define HAVE_FSEEKO 1
//#cmakedefine HAVE_LIBLCMS1
//#cmakedefine HAVE_LIBLCMS2
//#cmakedefine HAVE_LCMS1_H
//#cmakedefine HAVE_LCMS2_H
#endif // OPJ_CONFIG_H