Android如何拉伸图像的特定部分?

时间:2015-11-02 07:01:09

标签: android image android-canvas bitmapimage

我正在开发一个摄影应用程序,我想在其中选择照片的特定部分并仅拉伸该部分。怎么做? 我试图使用Canvas拉伸照片,但未能这样做。可以从 android.graphics.NinePatch 类开始吗? 有什么建议吗?

3 个答案:

答案 0 :(得分:0)

一个相当丑陋的解决方案是使用image cropping library。您可以使用它暂时裁剪图像的一部分并将其加载到另一个ImageView中,然后将其放大。

此外,您可以在不使用CropImageView的情况下完成任务。这个想法是每当用户触摸原始图像视图时,您将获得用户手指所在的(x,y)。因此,您可以提取以(x,y)为中心且具有给定半径的位图图像。

对于应用放大镜效果,您可以使用round/circular ImageView来显示图像的放大部分。

这样的事情:

enter image description here

答案 1 :(得分:0)

您可以使用矩阵将新维度应用于位图。 您可以使用矩阵对象的setscale / postScale方法。

答案 2 :(得分:0)

最后我找到了我的问题的解决方案:

Bitmap stretchImage = Bitmap.createBitmap(w, h+progress, Bitmap.Config.ARGB_8888 );

                c = new Canvas(stretchImage); 

                //draw top bit
                c.drawBitmap(normalImage, new Rect(0,0,w,75), new Rect(0,0,w,75), null);

                //draw middle bit
                c.drawBitmap(normalImage, new Rect(0,75,w, 150), new Rect(0,75,w,150+progress), null);

                //draw right bit
                c.drawBitmap(normalImage, new Rect(0 ,150,w,225), new Rect(0 ,150+progress,w,225+progress), null); 

                myImage.setImageBitmap(stretchImage);