我正在开发一个摄影应用程序,我想在其中选择照片的特定部分并仅拉伸该部分。怎么做?
我试图使用Canvas
拉伸照片,但未能这样做。可以从 android.graphics.NinePatch
类开始吗?
有什么建议吗?
答案 0 :(得分:0)
一个相当丑陋的解决方案是使用image cropping library。您可以使用它暂时裁剪图像的一部分并将其加载到另一个ImageView
中,然后将其放大。
此外,您可以在不使用CropImageView
的情况下完成任务。这个想法是每当用户触摸原始图像视图时,您将获得用户手指所在的(x,y)。因此,您可以提取以(x,y)为中心且具有给定半径的位图图像。
对于应用放大镜效果,您可以使用round/circular ImageView来显示图像的放大部分。
这样的事情:
答案 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);