有没有一种方法可以通过程序代码在Android中进行像素转换,就像你在下面的图片中看到的那样?源应该是原始图片,结果应该是转换后的图片。如果有人能把它的代码发给我就太好了。
我不知道Android是否可行,也不知道我该如何编程。
谢谢你的帮忙
向汤姆致以最良好的问候

原始图片

像素变换后的图片
发布于 2014-03-21 16:35:27
我找到了一个解决方案...
package com.devcom_networks.graphicslibrary;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
public class Pixelize {
Bitmap originalBmp;
Bitmap obscuredBmp;
Canvas obscuredCanvas ;
Paint obscuredPaint;
private final static int PIXEL_BLOCK = 120;
public Bitmap createPixelizedBitmap(Bitmap bitmap, int pixelsize)
{
if (bitmap == null)
return null;
// Create the bitmap that we'll output from this method
obscuredBmp = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(),bitmap.getConfig());
// Create the canvas to draw on
obscuredCanvas = new Canvas(obscuredBmp);
// Create the paint used to draw with
obscuredPaint = new Paint();
// Create a default matrix
Matrix obscuredMatrix = new Matrix();
// Draw the scaled image on the new bitmap
obscuredCanvas.drawBitmap(bitmap, obscuredMatrix, obscuredPaint);
pixelizeImage(obscuredBmp, obscuredCanvas, pixelsize);
return obscuredBmp;
}
private Bitmap pixelizeImage(Bitmap bitmap, Canvas canvas, int pixelSize)
{
originalBmp = bitmap;
if (pixelSize == 0)
pixelSize = (int)(bitmap.getWidth())/PIXEL_BLOCK;
if (pixelSize <= 0) //1 is the smallest it can be
pixelSize = 1;
int px, py;
for (int x = 0; x < originalBmp.getWidth() - 1; x+=pixelSize) {
for (int y = 0; y < originalBmp.getHeight() - 1; y+=pixelSize) {
px = (x/pixelSize)*pixelSize;
py = (y/pixelSize)*pixelSize;
try
{
int pixels[] = new int[pixelSize*pixelSize];
int newPixel = originalBmp.getPixel(px, py);
for (int i = 0; i < pixels.length; i++)
pixels[i] = newPixel;
originalBmp.setPixels(pixels, 0, pixelSize, px, py, pixelSize, pixelSize);
}
catch (IllegalArgumentException iae)
{
//something is wrong with our pixel math
break; //stop the filter
}
}
}
return originalBmp;
} }
https://stackoverflow.com/questions/22534249
复制相似问题