我使用Java創建了一個地圖編輯器。問題是,我對每個字節值都有步驟,所以地圖不平滑。是否可以將BufferedImage柵格數據更改爲浮點數據並在其上繪製浮點精度?Java使用浮點精度創建BufferedImage
1
A
回答
3
要回答你的問題,是的,你可以創建一個浮點精度的BufferedImage
。然而,這是否會幫助你解決你的問題還有點不清楚。
在任何情況下,這裏的工作實施例中的代碼,用於創建一個BufferedImage
與float
精度:
public class FloatImage {
public static void main(String[] args) {
// Define dimensions and layout of the image
int w = 300;
int h = 200;
int bands = 4; // 4 bands for ARGB, 3 for RGB etc
int[] bandOffsets = {0, 1, 2, 3}; // length == bands, 0 == R, 1 == G, 2 == B and 3 == A
// Create a TYPE_FLOAT sample model (specifying how the pixels are stored)
SampleModel sampleModel = new PixelInterleavedSampleModel(DataBuffer.TYPE_FLOAT, w, h, bands, w * bands, bandOffsets);
// ...and data buffer (where the pixels are stored)
DataBuffer buffer = new DataBufferFloat(w * h * bands);
// Wrap it in a writable raster
WritableRaster raster = Raster.createWritableRaster(sampleModel, buffer, null);
// Create a color model compatible with this sample model/raster (TYPE_FLOAT)
// Note that the number of bands must equal the number of color components in the
// color space (3 for RGB) + 1 extra band if the color model contains alpha
ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_sRGB);
ColorModel colorModel = new ComponentColorModel(colorSpace, true, false, Transparency.TRANSLUCENT, DataBuffer.TYPE_FLOAT);
// And finally create an image with this raster
BufferedImage image = new BufferedImage(colorModel, raster, colorModel.isAlphaPremultiplied(), null);
System.out.println("image = " + image);
}
}
對於圖高程數據,採用了單一的條帶(bands = 1; bandOffsets = {0};
)和灰度顏色空間(ColorSpace.CS_GRAY
)和沒有透明可能會更有意義。
相關問題
- 1. 浮點精度
- 2. 與浮點精度
- 3. C++浮點精度
- 4. C#浮點精度
- 5. haskell浮點精度
- 6. XMLSerialization浮點精度
- 7. Java中的雙精度浮點型
- 8. 雙精度浮點數和其他浮點數精度
- 9. 雙精度和單精度浮點數?
- 10. 使用REST的浮點精度
- 11. 專門爲雙精度和浮點精度的java類
- 12. Unity3d浮點精度限制
- 13. python中的浮點精度
- 14. 管理浮點精度
- 15. 爪哇 - 雙精度浮點
- 16. 力竭浮點精度
- 17. 浮點精度格式
- 18. 浮點運算的精度
- 19. 限制浮點精度?
- 20. MongoDB浮點值精度?
- 21. 增加浮點數精度
- 22. SQL設置浮點精度
- 23. IEEE 754和浮點精度
- 24. 本徵浮點精度
- 25. 更改浮點型精度
- 26. 單精度大端浮點值到Python浮點數(雙精度,大端)
- 27. 從單精度浮點表示轉換爲半精度浮點數
- 28. 雙精度浮點數如何轉換爲單精度浮點格式?
- 29. Python浮點任意精度可用?
- 30. 如何使用TYPE_BYTE_GRAY使用AWT高效創建灰度bufferedimage
目前還不清楚你的意思是「我有每個字節值的步驟」。我不明白你想要在這裏實現什麼... – 2014-11-05 20:47:13
從float到RGBA的轉換應該相對簡單,因爲你只需要將浮點的二進制表示(部分)解析爲int。但是你不會得到更平滑的,因爲你只有很多位來定義顏色。 – Turing85 2014-11-05 20:53:37
對不起,我的意思是當我繪製一層設置高度的紋理時,高度例如是5釐米,而不是0.5釐米。所以每個數字(字節)的步驟都是可見的。 – bitQUAKE 2014-11-05 21:07:20