Shpere distorsiyon filtresini kullanan bir uygulamayı uygulamaya çalışıyorum. Ben piksel konumunu getPixel() ve setpixel() yöntemleriyle değiştiren here'dan bir algoritma kullanıyorum. Benim sorunum Android cihazlar için çok yavaş ve aynı küre (ve diğerleri) benim yaklaşımından daha hızlı bir şekilde filtre uygulayan uygulamalar var. (örneğin Picsay Pro uygulaması) Hızlı distorsiyon algoritmalarını bulmak veya uygulamak için herhangi bir kişi paylaşabilir veya verebilir. algoritması uygularHızlı görüntü bozulma algoritmaları arıyorsunuz
Güncel filtresi:
public boolean sphereFilter(Bitmap b, boolean bSmoothing)
{
int nWidth = b.getWidth();
int nHeight = b.getHeight();
Point [][] pt = new Point[nWidth][nHeight];
Point mid = new Point();
mid.x = nWidth/2;
mid.y = nHeight/2;
double theta, radius;
double newX, newY;
for (int x = 0; x < nWidth; ++x)
for (int y = 0; y < nHeight; ++y)
{
pt[x][y]= new Point();
}
for (int x = 0; x < nWidth; ++x)
for (int y = 0; y < nHeight; ++y)
{
int trueX = x - mid.x;
int trueY = y - mid.y;
theta = Math.atan2((trueY),(trueX));
radius = Math.sqrt(trueX*trueX + trueY*trueY);
double newRadius = radius * radius/(Math.max(mid.x, mid.y));
newX = mid.x + (newRadius * Math.cos(theta));
if (newX > 0 && newX < nWidth)
{
pt[x][y].x = (int) newX;
}
else
{
pt[x][y].x = 0;
pt[x][y].y = 0;
}
newY = mid.y + (newRadius * Math.sin(theta));
if (newY > 0 && newY < nHeight && newX > 0 && newX < nWidth)
{
pt[x][ y].y = (int) newY;
}
else
{
pt[x][y].x = pt[x][y].y = 0;
}
}
offsetFilterAbs(b, pt);
return true;
}
hesaplanan piksellerin pozisyonları yerine kodu.
public boolean offsetFilterAbs(Bitmap b, Point[][] offset)
{
int nWidth = b.getWidth();
int nHeight = b.getHeight();
int xOffset, yOffset;
for(int y=0;y < nHeight;++y)
{
for(int x=0; x < nWidth; ++x)
{
xOffset = offset[x][y].x;
yOffset = offset[x][y].y;
if (yOffset >= 0 && yOffset < nHeight && xOffset >= 0 && xOffset < nWidth)
{
b.setPixel(x, y, b.getPixel(xOffset, yOffset));
}
}
}
return true;
}
[Image Warping - Bulge Effect Algorithm] 'ın olası bir kopyası (http://stackoverflow.com/questions/5055625/image-warping-bulge-effect-algorithm) –
Evet, oldukça yinelenir, ancak şunu unutmayın: Bu soruya cevap kabul edildi * burada değil * gerçekten istediğiniz bir şey - istediğiniz ne GLSL shader. –
@BlueRaja, Şu anda bağlantınızdaki ile aynı algoritmayı kullanıyorum ve android cihazlar için hala çok yavaş – Tony