srecord noeq HashBufferedImage(BufferedImage img) { long hash; long get() { var gp = grabbableIntPixels_fastOrSlow(img); bool hasAlpha = hasAlpha(img); var ping = pingSource(); int[] pixelsIn = gp.data; int w = gp.w, h = gp.h; int scanlineExtra = gp.scanlineStride-w; int iIn = gp.offset, iOut = 0; for y to h: { for x to w: { int packed = pixelsIn[iIn++]; if (!hasAlpha) packed |= 0xFF000000; hash = boostHashCombine64(hash, packed); } iIn += scanlineExtra; ping?!; } ret hash; } }