Javaでテクスチャをサンプリングする方法を実装しようとしています。私はGLSLの "テクスチャ"機能を使用するのと同じように動作します。私は色が計算されるときに、隣接するピクセルを考慮に入れたい。イメージのピクセル間の補間
たとえば、あるピクセルでイメージの色を取得するにはfloatを使用し、その数は2ピクセルになります。どのようにして隣接するピクセルの組み合わせを計算できますか?ここに私の目標を示すイメージがあります。
この使用してJavaのBufferedImageのクラスを行う簡単な方法はありますか?
これまでのコードはここにありますが、現時点ではx位置のみで動作します。あなたが適切にこれを使用する場合
public static final java.awt.Color getColor(final BufferedImage image, final float x, final int y) {
final float imageX = x * image.getWidth();
final float decimal = imageX % 1f;
final java.awt.Color left = new java.awt.Color(image.getRGB(Maths.clamp((int) imageX - 1, 0, image.getWidth() - 1), y));
final java.awt.Color center = new java.awt.Color(image.getRGB(Maths.clamp((int) imageX, 0, image.getWidth() - 1), y));
final java.awt.Color right = new java.awt.Color(image.getRGB(Maths.clamp((int) imageX + 1, 0, image.getWidth() - 1), y));
if (decimal == 0.5f) return center;
if (decimal < 0.5f) {
final float distanceFromCenter = 0.5f - decimal;
final float distanceFromLeft = decimal + 0.5f;
final Vector3f leftColor = new Vector3f(left.getRed()/255f, left.getGreen()/255f, left.getBlue()/255f);
final Vector3f centerColor = new Vector3f(center.getRed()/255f, center.getGreen()/255f, center.getBlue()/255f);
leftColor.scale(1f - distanceFromLeft);
centerColor.scale(1f - distanceFromCenter);
final Vector3f color = Vector3f.add(leftColor, centerColor, null);
return new java.awt.Color(color.getX(), color.getY(), color.getZ());
} else {
final float distanceFromCenter = decimal - 0.5f;
final float distanceFromRight = 1f - decimal + 0.5f;
final Vector3f rightColor = new Vector3f(right.getRed()/255f, right.getGreen()/255f, right.getBlue()/255f);
final Vector3f centerColor = new Vector3f(center.getRed()/255f, center.getGreen()/255f, center.getBlue()/255f);
rightColor.scale(1f - distanceFromRight);
centerColor.scale(1f - distanceFromCenter);
final Vector3f color = Vector3f.add(rightColor, centerColor, null);
return new java.awt.Color(color.getX(), color.getY(), color.getZ());
}
}
正確に補間する意味は?何が問題なのか、何を達成しようとしているのか、ここでいくつかのコードを提供してください。 –
イメージを持っていて、バッファリングされたイメージを使用してピクセルを使って色を変更したいのですか? –
画像が伸ばされても、画像を実際に伸ばさないで**そこにあるピクセルの色を得たいです。 – ASasseCreations