3

我想在我的 android 应用程序中使用WarpFilterjhlabs为此,我使用了 jhlabs 提供的 jar,但其中没有 WarpFilter 类的定义。我引用了 WarpFilter这个链接。我试图通过在我的应用程序中复制它来使用该类。但问题是,它使用了一些 android sdk 不支持的类。我还引用了谷歌代码链接,但它也没有提供任何实现。请任何人都可以建议我一些解决方案?有没有其他提供扭曲图像功能的库/jar?请帮我解决这个问题。

谢谢。

4

1 回答 1

0

使用这样的过滤器:

final Bitmap bmporg = BitmapFactory.decodeByteArray(byteArrayorg, 0, byteArrayorg.length);

Line line1 = new Line(0, 0, bmporg.getWidth(), 0);
Line line2 = new Line(0, bmporg.getHeight()/2, bmporg.getWidth(), bmporg.getHeight()/2);
Line line3 = new Line(0, bmporg.getHeight(), bmporg.getWidth(), bmporg.getHeight());

final Line[] lineArray = {line1, line2, line3 };

Line line4 = new Line(0, 0, bmporg.getWidth(), bmporg.getHeight());
Line line5 = new Line(0, 0, bmporg.getWidth(), bmporg.getHeight());
Line line6 = new Line(0, 0, bmporg.getWidth(), bmporg.getHeight());

final Line[] lineArray2 = {line4, line5, line6 };

FieldWarpFilter fieldWarpFilter = new FieldWarpFilter();
fieldWarpFilter.setAmount(amountFieldWarpFilter);
fieldWarpFilter.setPower(powerFieldWarpFilter);
fieldWarpFilter.setStrength(strengthFieldWarpFilter);
fieldWarpFilter.setInLines(lineArray);
fieldWarpFilter.setOutLines(lineArray2);
int[] src22 = AndroidUtils.bitmapToIntArray(bmporg);
int width22 = bmporg.getWidth();
int height22 = bmporg.getHeight();
int[] dest22 = fieldWarpFilter.filter(src22, width22, height22);
Bitmap destBitmap = Bitmap.createBitmap(dest22, width22, height22, Bitmap.Config.ARGB_8888);

imageView1.setImageBitmap(destBitmap);
于 2017-01-22T06:29:28.880 回答