Android视图缩略图提取具有工件

时间:2015-10-26 19:29:06

标签: android

我有一个自定义视图,我可以像这样绘制有边框的矩形:

protected void onDraw(Canvas cv) {
    Paint p = new Paint();
    p.setStrokeWidth(5);
    p.setColor(Color.LTGRAY);
    p.setStyle(Paint.Style.FILL);
    for (Rect rect : rects) {
        cv.drawRect(rect.left, rect.top, rect.right, rect.bottom, p);
    }
    p.setColor(Color.BLACK);
    p.setStyle(Paint.Style.STROKE);
    for (Rect rect : rects) {
        cv.drawRect(rect.left, rect.top, rect.right, rect.bottom, p);
    }
}

当用户通过与其交互修改此视图时,是时候将其保存到sqlite数据库,以及它的缩略图,其目的是将每个特定视图的缩略图添加到列表视图,当用户想要检索特定的一个时。 除了缩略图处理之外,所有这些都能完美地工作:一些但不是全部的黑线丢失,每隔一个像素都是正确的,并且缩放也是正确的。

view.setDrawingCacheEnabled(true);
Bitmap original = view.getDrawingCache();
int w = original.getWidth();
int h = original.getHeight();
float scaling = 100f / Math.max(w, h);
Bitmap b = Bitmap.createScaledBitmap(original, Math.round(scaling * w), Math.round(scaling * h), false);

在这个特定点上,位图是错误的,无论是使用上面的代码创建,使用ThumbnailUtils类,还是使用android.graphic.Matrix来处理缩放。 没有缩放,位图始终是正确的。

Original canvas Scaled erroneous thumbnail以下是视图的截图,由四个矩形(在本例中为方形)和上述代码生成的错误缩略图组成。

如果有人有领导,非常感谢。

0 个答案:

没有答案