OSDN Git Service

ImageCacheのキャッシュ状況をMBeanによりリアルタイムにチェック可能にした。
[charactermanaj/CharacterManaJ.git] / src / charactermanaj / graphics / io / LoadedImage.java
index b2cecd8..e891e8d 100644 (file)
@@ -1,6 +1,7 @@
 package charactermanaj.graphics.io;\r
 \r
 import java.awt.image.BufferedImage;\r
+import java.awt.image.DataBuffer;\r
 \r
 /**\r
  * ロードされたイメージ情報\r
@@ -9,20 +10,40 @@ import java.awt.image.BufferedImage;
 public final class LoadedImage {\r
 \r
        private final BufferedImage image;\r
-       \r
+\r
        private final long lastModified;\r
-       \r
+\r
+       private final int imageSize;\r
+\r
        public LoadedImage(BufferedImage image, long lastModified) {\r
                this.image = image;\r
                this.lastModified = lastModified;\r
+               this.imageSize = getBufferSize(image);\r
        }\r
-       \r
+\r
        public BufferedImage getImage() {\r
                return image;\r
        }\r
-       \r
+\r
        public long getLastModified() {\r
                return lastModified;\r
        }\r
-       \r
+\r
+       public int getImageSize() {\r
+        return imageSize;\r
+    }\r
+\r
+       /**\r
+        * 画像バッファのバイト数を求める.<br>\r
+        * @param image イメージ\r
+        * @return バイト数\r
+        */\r
+       private static int getBufferSize(BufferedImage image) {\r
+           if (image == null) {\r
+               return 0;\r
+           }\r
+           DataBuffer buff = image.getRaster().getDataBuffer();\r
+           int bytes = buff.getSize() * DataBuffer.getDataTypeSize(buff.getDataType()) / 8;\r
+           return bytes;\r
+       }\r
 }\r