FreeImage Android 移植

原创 2016年08月28日 20:31:47
Ubuntu 12.4 目录/home/jsa/share/FreeImage/FreeImage_makefile/FreeImage_3154
1、版本3154
2、添加文件夹missing ,包括头文件和函数swab.h swab.cpp
swab.cpp
#include <stdint.h>
#include <asm/byteorder.h>
static void swab(const void *from, void *to,ssize_t n)
{
   ssize_t i;
   if(n < 0)
   {
    return ;
   }
   for(i = 0 ;i < (n / 2)*2; i += 2)
   {
    *((uint16_t *)to+i) = __arch__swab16(*((uint16_t *)from+i));    
   }
}
swab.h:
#ifndef __SWAB_H_
#define __SWAB_H_
static void swab(const void *from, void *to,ssize_t n);
#endif
3、在gensrclist.sh里添加 missing 目录
DIRLIST="missing “
4、在ndk 下的 /home/jsa/share/android-ndk-r9/platforms/android-18/arch-arm/usr/include/asm 目录下的byteorder.h添加
/*static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) //add by jsa
{
      __u16 __x = (x);

        ((__u16)(

                 (((__u16)(__x) & (__u16)0x00ffU) << 8) |

                 (((__u16)(__x) & (__u16)0xff00U) >> 8) ));
 return __x;

}
#define __arch__swab16(x) ___arch__swab16(x)*/

这一步先可以省掉,如果出现无  __arch__swab16 声明时再加上,这个函数未验证,可用性


更改在dcraw_common.cpp 最上边添加如下代码 解决 swab 函数找不到问题 ,1,2,3步均不用操作了
#include <stdint.h>
#include <asm/byteorder.h>
#define __arch__swab16_my(x)  ({ __u16 __x = (x);   ((__u16)(   (((__u16)(__x) & (__u16)0x00ffU) << 8) | (((__u16)(__x) & (__u16)0xff00U) >> 8) ));  })
static void swab(const void *from, void *to,ssize_t n)
{
   ssize_t i;
   if(n < 0)
   {
 return ;
   }
   for(i = 0 ;i < (n / 2)*2; i += 2)
   {
 *((uint16_t *)to+i) = __arch__swab16_my(*((uint16_t *)from+i));
   }
}

5、ImfHuf.cpp 头文件顺序改为
/*#include <ImfHuf.h>
#include <ImfInt64.h>
#include <ImfAutoArray.h>
#include "Iex.h"
#include <string.h>
#include <assert.h>
#include <algorithm>*/

#include <string.h>
#include <cstring>
#include <algorithm>
#include <ImfHuf.h>
#include <ImfInt64.h>
#include <ImfAutoArray.h>
#include "Iex.h"
#include <assert.h>

6、var_defines.h中添加
#ifdef __ANDROID__ //add by jsa
#include <swab.h>
#endif //end add

7、注释掉LibTIFF4下tif_config.h里的
/* Define to 1 if you have the <search.h> header file. */
//#define HAVE_SEARCH_H 1
8、主要修改Makefile.gnu文件
Makefile.gnu

9、修改完之后执行 source gensrclist.sh 命令
产生Makefile.srcs文件
再执行make 命令

解决使用FreeImage静态库,无法找到库里的函数问题
preprocess 定义FREEIMAGE_LIB

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

FreeImage使用方法

FreeImage使用方法 一、FreeImage 简介 FreeImage 是一款免费的、开源的、跨平台(Windows 、Linux 和Mac OS X )的,支持20 多种图像类...

{Android-编译FreeImage For Android}

最近要在一个Android项目里使用FreeImage库,所以移植到Android中 最麻烦的也是最核心的就是这个MakeFile,R5编译有问题,正好R6诞生了 编译的过程中出现了无法找...

No.2_2 FreeImage——加载/存储图像

FreeImage 是一款免费的开源图形库,它可以用于 Windows,Linux 和 Mac OS X 系统。该程序将图像文件转换为字节流存入二进制文件,在把二进制文件转换为图像文件。...

A20_Android快速移植指南

  • 2017年11月05日 23:23
  • 1.51MB
  • 下载

Android显示外设信息功能移植

  • 2015年06月16日 11:36
  • 153KB
  • 下载

常用三方库的跨iOS平台编译(freeimage、gdal、geos、proj4、freetype、cximage)

第三方跨IOS平台编译 FreeImage 此次编译使用的Xcode4.6版本 macOS X为10.9版本  1.1打开终端执行make –f makefile文件...
  • lzhTBNO
  • lzhTBNO
  • 2015年11月16日 10:29
  • 1733

运用freeimage实现opencv下的gif解析

在介绍如何解析gif图像文件之前,首先简单介绍一下gif图像文件。GIF: 任何商业目的运用都需要CompuServe公司授权 特点: GIF只支持256色以内的图像。 GIF采用无...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FreeImage Android 移植
举报原因:
原因补充:

(最多只允许输入30个字)