复制位图问题

时间:2011-08-25 08:32:26

标签: android bitmap

我有一个问题要问。我只想在以下代码中向位图添加文本。当我调试到Bitmap bmp = bmp1.copy(bmp1.getConfig(), true);时,在观察窗口一切正常,我可以看到640和480的宽度和高度。

但在执行复制方法后,它将Bitmap返回到bmp,但是bmp的宽度和高度为-1和-1,并且无法添加文本。可能有些人告诉我为什么以及如何解决这个问题。非常感谢

    String strPath=Environment.getExternalStorageDirectory().toString();
    String strFileNameIn="aaa.jpg";
    File inFile=new File(strPath+File.separator+strFileNameIn); 
    try {
        if (inFile.exists()) {
    FileInputStream inStream = new FileInputStream(inFile);
    BitmapDrawable bmpDraw = new BitmapDrawable(inStream);
        Bitmap bmp1 = bmpDraw.getBitmap();
    Bitmap bmp = bmp1.copy(bmp1.getConfig(), true);

    Canvas cv = new Canvas(bmp);
    SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String strText = sDateFormat.format(new Date());
        Paint p = new Paint();
    p.setColor(Color.RED);

    cv.drawText(strText, 0, 0, p);
    cv.save(Canvas.ALL_SAVE_FLAG);
    cv.restore();
    }
        } catch (Exception e) {
          String strMsg = e.getMessage();
        }

1 个答案:

答案 0 :(得分:0)

使用bitmapfactory可以更轻松地获取位图。

这个怎么样:

Bitmap bitmap = BitmapFactory.decodeFile("your file");
if (bitmap != null) {
    Paint p = new Paint();
    Canvas cv = new Canvas();
    cv.drawBitmap(bitmap, 0, 0, p);
    SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String strText = sDateFormat.format(new Date());
    p.setColor(Color.RED);

    cv.drawText(strText, 0, 0, p);
    cv.save(Canvas.ALL_SAVE_FLAG);
    cv.restore();
}