的代码非常简单,基本上看起来像以下(在Java中):
PointillizeFilter filter = new PointillizeFilter();
filter.setEdgeColor(Color.BLACK);
filter.setScale(10f);
filter.setRandomness(0.1f);
filter.setAmount(0.1f);
filter.setFuzziness(0.1f);
filter.setTurbulence(10f);
filter.setGridType(PointillizeFilter.SQUARE);
int[] src = AndroidUtils.bitmapToIntArray(artWork);
src = filter.filter(src, width, height);
Bitmap destImage = Bitmap.createBitmap(src, width, height, Config.ARGB_8888);
在Java:
public static int[] bitmapToIntArray(Bitmap bitmap){
final int bitmapWidth = bitmap.getWidth();
final int bitmapHeight = bitmap.getHeight();
int[] colors = new int[bitmapWidth * bitmapHeight];
bitmap.getPixels(colors, 0, bitmapWidth, 0, 0, bitmapWidth, bitmapHeight);
return colors;
}
我已经转换这个函数到C#,有轻微的问题:
public static int[] bitmapToIntArray(BitmapImage bitmapImage)
{
int bitmapWidth = bitmapImage.PixelWidth;
int bitmapHeight = bitmapImage.PixelHeight;
int[] colors = new int[bitmapWidth * bitmapHeight];
// how to convert line below?
//bitmap.getPixels(colors, 0, bitmapWidth, 0, 0, bitmapWidth, bitmapHeight);
return colors;
}
通过文档查看,我看到了很多不同类的位图:WriteableBitmap,Bitm apImage,BitmapEncoder和BitmapDecoder。我没有找到适用于Windows Phone 8.1的getPixel类,但Windows Store应用程序有一个。即使在那里,它只是为了获得一个像素。
createBitmap()命令也一样。我找不到任何等价物。
我的问题是,是否有相当于Windows Phone 8.1的getPixels()和createBitmap()命令的一行?最好是使用BitmapDecoder?
2014-09-03
greentea