Transpiled version (8035L) is out of date.
1 | // The hash for an image without alpha channel is guaranteed to be |
2 | // identical for a completely opaque image with alpha. |
3 | srecord noeq HashBufferedImage(BufferedImage img) {
|
4 | long hash; |
5 | |
6 | long get() {
|
7 | if (img == null) ret hash; |
8 | |
9 | var gp = grabbableIntPixels_fastOrSlow(img); |
10 | bool hasAlpha = hasAlpha(img); |
11 | |
12 | var ping = pingSource(); |
13 | int[] pixelsIn = gp.data; |
14 | int w = gp.w, h = gp.h; |
15 | int scanlineExtra = gp.scanlineStride-w; |
16 | int iIn = gp.offset; |
17 | |
18 | addToHash(w); |
19 | addToHash(h); |
20 | |
21 | for y to h: {
|
22 | for x to w: {
|
23 | int packed = pixelsIn[iIn++]; |
24 | if (!hasAlpha) packed |= 0xFF000000; |
25 | addToHash(packed); |
26 | } |
27 | |
28 | iIn += scanlineExtra; |
29 | ping?!; |
30 | } |
31 | |
32 | ret hash; |
33 | } |
34 | |
35 | void addToHash(long x) {
|
36 | hash = boostHashCombine64(hash, x); |
37 | printVars ifdef HashBufferedImage_debug(x := longToHex(x), +hash); |
38 | } |
39 | } |
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, ekrmjmnbrukm, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1034798 |
| Snippet name: | HashBufferedImage - makes a 64 bit hash of an image (fast but not as good as MD5) |
| Eternal ID of this version: | #1034798/8 |
| Text MD5: | 088589a5c62c2301a77bd2dd5dd1178e |
| Author: | stefan |
| Category: | javax / imaging |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2022-03-10 22:57:41 |
| Source code size: | 941 bytes / 39 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 607 / 762 |
| Version history: | 7 change(s) |
| Referenced in: | [show references] |