android将图像切成10个相等的部分

时间:2012-06-04 12:35:40

标签: android bitmap

我有想要切成10个垂直相等高度的图像,因此hdpi切片尺寸为800 * 48(横向应用)。我有以下代码无效

public void convertBitmapinSlices(){
        Bitmap tempBitmap;
        try{
            Paint paint = new Paint();
            paint.setFilterBitmap(true);     
            tempBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.img1); 
            int targetWidth  = (int) Methods.dpToPx(tempBitmap.getWidth(), this);
            Log.v("TARGET_WIDTH", Integer.toString(targetWidth));            
            int targetHeight = (int) (Methods.dpToPx(tempBitmap.getHeight(), this)/10);
            Log.v("TARGET_HEIGHT", Integer.toString(targetHeight));
            Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight,Bitmap.Config.ARGB_8888);
            RectF rectf = new RectF(0, 0, targetWidth, targetHeight);
            Canvas canvas = new Canvas(targetBitmap);
            Path path = new Path();
            path.addRect(rectf, Path.Direction.CW);
            canvas.clipPath(path);
            int starty=0;
            lLforGardenImages.removeAllViews();
           for(int i=1; i<=10;i++){
               Log.v("SRC-Height", Integer.toString(targetHeight*i));
               Log.v("START-Y", Integer.toString(starty));
                canvas.drawBitmap(tempBitmap, new Rect(0, starty, tempBitmap.getWidth(), (tempBitmap.getHeight()/10)+starty),
                                new Rect(0, 0, targetWidth,targetHeight), paint);
               // Matrix matrix = new Matrix();
               // matrix.postScale(1f, 1f);
                Bitmap resizedBitmap = Bitmap.createBitmap(targetBitmap, 0, 0, targetWidth, targetHeight, null, true);
                Log.v("Width after Resizing ", resizedBitmap.getWidth()+"");
                Log.v("Height  after Resizing ", resizedBitmap.getHeight()+""); 
                BitmapDrawable bd = new BitmapDrawable(resizedBitmap);
                ImageView iv = new ImageView(this);
                iv.setAdjustViewBounds(true);
                iv.setBackgroundDrawable(bd);
                lLforGardenImages.addView(iv, llayoutParams);
                if((i % 2) == 0){
                    iv.startAnimation(sliderAnimation(-1.0f,0.0f,0.0f,0.0f,1000));
                }else{
                    iv.startAnimation(sliderAnimation(1.0f,0.0f,0.0f,0.0f,1000));
                }
                starty= starty+targetHeight;
             }

        }
        catch(Exception e){
            System.out.println("Error1 : " + e.getMessage() + e.toString());
      }
}

知道我做错了吗?

输出是切片不正确并且具有似乎具有较小高度但切片高度正确的内容,即48并且宽度也是正确的。因此,只有上述代码的问题是,即使切片高度正确,内容高度似乎也不正确。

0 个答案:

没有答案