分享

Android平台上使用skia库进行jpeg图片解码

 mandrave 2013-04-01

本文针对如何使用Skia库进行JPEG解码做以简单介绍。

一、Skia介绍

Skia  Google一个底层的图形、图像、动画、SVG、文本等多方面的图形库,是 Android 中图形系统的引擎。Skia 作为第三方软件放在 external 目录下: external/skia/ 

如果想对Skia有更深入的了解,可参考如下网址:

http://blog.csdn.net/cuiyan0214/archive/2010/10/25/5964689.aspx

http://blog.csdn.net/wxzking/archive/2011/05/14/6419219.aspx

 

二、使用Skia库进行JPEG图片解码

调用Skia库对JPEG图片解码,需要包含三个头文件,分别为:SkStream.h

SkImageDecoder.hSkBitmap.h

具体的实现代码如下:

    SkBitmap bp;

SkImageDecoder::Format fmt;

property_set("hw.jpeg.path", "/data/test.jpg"); //此处的property_set应该在别的地方进行set

    char propBuf[PROPERTY_VALUE_MAX]; 

    property_get("hw.jpeg.path ", propBuf, "");

    LOGI("property_get: %s.", propBuf);

Bool result = SkImageDecoder::DecodeFile(propBuf,

 &bp,SkBitmap::kRGB_565_Config, SkImageDecoder::kDecodePixels_Mode, &fmt);

    if(!result){

        LOGI("decoder file fail!");

    }else{

        if(fmt!= SkImageDecoder::kJPEG_Format){

            LOGI("decoder file not jpeg!");

        }else{

LOGI("width %d,height %d,rowBytesAsPixels %d,config %d,

bytesPerPixel %d",bp.width(),bp.height(),bp.rowBytesAsPixels(),bp.config(),bp.bytesPerPixel());

        FILE *f_rgb=fopen("/data/test_rgb565.raw","wb");

        short *pixl = (short *) bp.getPixels();

        for(int j=0;j<bp.height();j++){

            fwrite(pixl,1,bp.width()*bp.bytesPerPixel(),f_rgb);

            pixl += bp.rowBytesAsPixels();

        }

        fclose(f_rgb);

        }

}

需要说明的是:

Fmt:获取的图片的格式;

bp.width()图片的宽度;

bp.height()图片的高度;

bp.rowBytesAsPixels():一行的pixel数,有pitch问题;

bp.config()图片被解码后的文件格式;

bp.bytesPerPixel():每个pixel占用的byte数;

Bool result = SkImageDecoder::DecodeFile(propBuf,

 &bp,SkBitmap::kRGB_565_Config, SkImageDecoder::kDecodePixels_Mode, &fmt);

propBuf中存储的JPEG图片解码成rgb565文件。

 

三、编译问题

在编译的时候,需要在Android.mk文件中加入libskia库,同时需要引入如下路径:

external/skia/include/images

external/skia/include/core

 

对于property_set/ property_get的使用需要注意一些问题。这个可以参考如下文章:

Android平台上使用属性系统(property system)

http://blog.csdn.net/wxzking/archive/2011/05/14/6419404.aspx

 

E-mailwxiaozhe@163.com

QQ1226062415
Date
2011/5/14
Blog
http://blog.csdn.net/wxzking

欢迎交流,欢迎转载,转载时请保留以上信息。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多