怎么把从SDCard中加载的SkBitmap用SkCanvas绘制出来?我的C++代码如下://绘制一条直线
canv->drawLine(10,150,400,150,*paint);
//绘制图片
SkCanvas* canv = GraphicsJNI::getNativeCanvas(env, canvas);
SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint);
SkBitmap bitmap;
SkFILEStream* stream = new SkFILEStream("/mnt/sdcard/test/test.png");
bool ret = SkImageDecoder::DecodeStream(stream, &bitmap);
if(ret) canv->drawBitmap(bitmap, 10, 180, paint);
绘制直线是绘制成功了的,图片是加载成功了的,但是绘制没有成功,看了些资料,是不是将图片加载为SkBitmap后是不是还需要对得到的SkBitmap进行像素方面的处理啊?怎么进行?谁知到啊?谢谢【焦急等待着】。

解决方案 »

  1.   

    请问你的skia库是怎么调用的呢?是在ndk下呢?还是将skia的库自己编译出来的呢?好像目前ndk并不支持skia库哦
      

  2.   

    明显是使用 ndk 链接 skia 库画的,不过我是遇到过在 2.x 上和 3.x 上可以正常使用 skia 库,却不能在 4.x 上正常使用的情况,所以建议还是通过正常的 java 函数进行实现比较好
      

  3.   

    请教楼上的怎么实用ndk连接skia库呢?我在ndk的里面都没找到对应的头文件和库啊?
      

  4.   

    额,那还是要自己编译系统源码,我还以为一般的ndk下面有了呢
      

  5.   

    嗯,我用的就是NDK连接skia库绘制的,我怀疑是解码不成功导致的,绘制的时候好像是没有取到地址,绘制的时候系统给出的debug信息:
    02-19 11:50:48.889: I/DEBUG(2610): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 42c8001c
      

  6.   

    这个,怀疑是没有判断是否空指针了吧,出现段错误 SIGSEGV 了
      

  7.   

    以下是我绘制的时候系统给出的DEBUG信息:
    03-02 13:23:59.929: I/DEBUG(17177): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    03-02 13:23:59.929: I/DEBUG(17177): Build fingerprint: 'samsung/libra_galaxys2/galaxys2:2.3.7/MIUI/2.2.24:userdebug/test-keys'
    03-02 13:23:59.929: I/DEBUG(17177): pid: 31611, tid: 31611  >>> com.whtr.example.skiademo <<<
    03-02 13:23:59.929: I/DEBUG(17177): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 4120001c
    03-02 13:23:59.929: I/DEBUG(17177):  r0 001ae338  r1 bef7f3d0  r2 41200000  r3 43480000
    03-02 13:23:59.929: I/DEBUG(17177):  r4 ab16d218  r5 001ae338  r6 bef7f3d0  r7 00099028
    03-02 13:23:59.929: I/DEBUG(17177):  r8 bef7f418  r9 4428c534  10 0000abe0  fp aca9f374
    03-02 13:23:59.929: I/DEBUG(17177):  ip afa03108  sp bef7f3a4  lr 80601e9d  pc ab16d21c  cpsr 60000010
    03-02 13:23:59.929: I/DEBUG(17177):  d0  6d74696220676e70  d1  69666e6f435f3868
    03-02 13:23:59.929: I/DEBUG(17177):  d2  6563637573205d69  d3  2e2e2e2e2e2e7373
    03-02 13:23:59.929: I/DEBUG(17177):  d4  0000000000000000  d5  0000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d6  0000000000000000  d7  0000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d8  0000000000000000  d9  0000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d10 0000000000000000  d11 0000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d12 0000000000000000  d13 0000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d14 0000000000000000  d15 0000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d16 0000000000000000  d17 ff00ff00ff00ff00
    03-02 13:23:59.929: I/DEBUG(17177):  d18 4034000000000000  d19 0000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d20 3ff0000000000000  d21 c034000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d22 8000000000000000  d23 0000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d24 0000000000000000  d25 3ff0000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d26 4034000000000000  d27 4061400000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d28 0000000000000000  d29 3ff0000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  d30 3ff0000000000000  d31 8000000000000000
    03-02 13:23:59.929: I/DEBUG(17177):  scr 20000010
    03-02 13:23:59.994: I/AlarmManager(2714): wakelock acquire, uid:1000 at elapsed real time: 90785444
    03-02 13:24:00.019: I/AlarmManager(2714): wakelock release, uid:1000 at elapsed real time: 90785471
    03-02 13:24:00.069: I/DEBUG(17177):          #00  pc 0006d21c  /system/lib/libskia.so (_ZN8SkCanvas8drawRectERK6SkRectRK7SkPaint)
    03-02 13:24:00.069: I/DEBUG(17177):          #01  lr 80601e9d  /data/data/com.whtr.example.skiademo/lib/libSkiaDemo.so
    03-02 13:24:00.069: I/DEBUG(17177): code around pc:
    03-02 13:24:00.069: I/DEBUG(17177): ab16d1fc e28d2038 eb003e26 e1a01000 eaffff6b 
    03-02 13:24:00.069: I/DEBUG(17177): ab16d20c e1a00005 eb004ce9 eaffff64 e92d4ff0 
    03-02 13:24:00.069: I/DEBUG(17177): ab16d21c e592c01c e5925024 e592a028 e1a04002 
    03-02 13:24:00.069: I/DEBUG(17177): ab16d22c e1a07000 e5922010 e18a000c e24dd04c 
    03-02 13:24:00.069: I/DEBUG(17177): ab16d23c e1853000 e1a05001 e1922003 1a00000a 
    03-02 13:24:00.069: I/DEBUG(17177): code around lr:
    03-02 13:24:00.069: I/DEBUG(17177): 80601e7c 682bee2c 92002200 0200f240 46314628 
    03-02 13:24:00.069: I/DEBUG(17177): 80601e8c f2406cdc f2c40300 f2c43348 47a01220 
    03-02 13:24:00.069: I/DEBUG(17177): 80601e9c 4a234922 44792004 f7ff447a 4630ee16 
    03-02 13:24:00.069: I/DEBUG(17177): 80601eac ee18f7ff f7ff4630 b157edf2 4638683b 
    03-02 13:24:00.069: I/DEBUG(17177): 80601ebc 4798685b 4a1be005 46212006 f7ff447a 
    03-02 13:24:00.069: I/DEBUG(17177): stack:
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f364  4428c534  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f368  00099028  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f36c  afd13ba1  /system/lib/libc.so
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f370  00099040  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f374  00000001  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f378  00000006  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f37c  bef7f3d0  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f380  bef7f3fc  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f384  afd149e1  /system/lib/libc.so
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f388  00099040  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f38c  afc009c7  /system/lib/libstdc++.so
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f390  00099040  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f394  ab145024  /system/lib/libskia.so
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f398  df002777  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f39c  e3a070ad  
    03-02 13:24:00.069: I/DEBUG(17177):     bef7f3a0  00000001  
    03-02 13:24:00.069: I/DEBUG(17177): #00 bef7f3a4  ab16d218  /system/lib/libskia.so
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3a8  001ae338  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3ac  bef7f3d0  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3b0  00099028  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3b4  bef7f418  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3b8  4428c534  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3bc  0000abe0  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3c0  aca9f374  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3c4  80601e9d  /data/data/com.whtr.example.skiademo/lib/libSkiaDemo.so
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3c8  00000000  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3cc  00098f70  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3d0  00000000  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3d4  00099080  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3d8  00000000  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3dc  00000001  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3e0  001d4980  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3e4  00000000  
    03-02 13:24:00.074: I/DEBUG(17177):     bef7f3e8  000000d4  
    03-02 13:24:00.719: I/BootReceiver(2714): Copying /data/tombstones/tombstone_06 to DropBox (SYSTEM_TOMBSTONE)
    03-02 13:24:00.724: I/WindowManager(2714): WIN DEATH: Window{40f96180 com.whtr.example.skiademo/com.whtr.example.skiademo.SkiaDemoActivity paused=false}
    03-02 13:24:00.729: I/ActivityManager(2714): Process com.whtr.example.skiademo (pid 31611) has died.