Skip to content

Commit

Permalink
New image link format (#3477)
Browse files Browse the repository at this point in the history
### What

* Fixes #2461

The new link format is
`https://static.rerun.io/{original_image_name_minus_extension}/{content_hash}/{width}.{ext}`

For example,
`https://static.rerun.io/ae4b8970edba8480431cb71e57b8cddd9e1769c7_clock_480w.png`
is now
`https://static.rerun.io/clock/ae4b8970edba8480431cb71e57b8cddd9e1769c7/480w.png`.

What makes this more discoverable:
- For machines, it's the fact that the hash is the same for all sizes.
This means given an image URL, you can retrieve all the other sizes.
This is important for #3445.
- For humans, the top-level directory is the name of the image, which
makes it _much_ easier to browse through GCS looking for that image. You
can compare the `updated at` date of each hash to find the latest one.

`upload_image.py` has been updated to use the new format. We're nowhere
near the point of using too much space on GCS, so all the old links are
preserved.

This PR also fixes some other issues:
- `thumbnails.py` did not handle updating `thumbnail_dimensions`
correctly if the property was already present in the frontmatter
- `upload_image.py` would fail if the user does not have `delete`
permission when uploading the same image twice, because it would attempt
to overwrite the existing image. if the content hash does not change,
then we do not need to upload the image again, so we just skip uploading
to GCS if the object already exists.

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/3477) (if
applicable)

- [PR Build Summary](https://build.rerun.io/pr/3477)
- [Docs
preview](https://rerun.io/preview/67a25d43432ddf6245f04ca52806fd976a4dac4e/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/67a25d43432ddf6245f04ca52806fd976a4dac4e/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://ref.rerun.io/dev/bench/)
- [Wasm size tracking](https://ref.rerun.io/dev/sizes/)
  • Loading branch information
jprochazk authored Sep 26, 2023
1 parent dbeaebb commit 6cf6902
Show file tree
Hide file tree
Showing 71 changed files with 591 additions and 569 deletions.
14 changes: 7 additions & 7 deletions crates/re_viewer/data/examples_manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"demo_url": "https://demo.rerun.io/version/nightly/examples/arkit_scenes/",
"rrd_url": "https://demo.rerun.io/version/nightly/examples/arkit_scenes/data.rrd",
"thumbnail": {
"url": "https://static.rerun.io/8b90a80c72b27fad289806b7e5dff0c9ac97e87c_arkit_scenes_480w.png",
"url": "https://static.rerun.io/arkit_scenes/fb9ec9e8d965369d39d51b17fc7fc5bae6be10cc/480w.png",
"width": 480,
"height": 243
}
Expand All @@ -33,7 +33,7 @@
"demo_url": "https://demo.rerun.io/version/nightly/examples/detect_and_track_objects/",
"rrd_url": "https://demo.rerun.io/version/nightly/examples/detect_and_track_objects/data.rrd",
"thumbnail": {
"url": "https://static.rerun.io/efb301d64eef6f25e8f6ae29294bd003c0cda3a7_detect_and_track_objects_480w.png",
"url": "https://static.rerun.io/detect_and_track_objects/59f5b97a8724f9037353409ab3d0b7cb47d1544b/480w.png",
"width": 480,
"height": 279
}
Expand All @@ -50,7 +50,7 @@
"demo_url": "https://demo.rerun.io/version/nightly/examples/dicom_mri/",
"rrd_url": "https://demo.rerun.io/version/nightly/examples/dicom_mri/data.rrd",
"thumbnail": {
"url": "https://static.rerun.io/b8b25dd01e892e6daf5177e6fc05ff5feb19ee8d_dicom_mri_480w.png",
"url": "https://static.rerun.io/dicom_mri/e39f34a1b1ddd101545007f43a61783e1d2e5f8e/480w.png",
"width": 480,
"height": 285
}
Expand All @@ -66,7 +66,7 @@
"demo_url": "https://demo.rerun.io/version/nightly/examples/dna/",
"rrd_url": "https://demo.rerun.io/version/nightly/examples/dna/data.rrd",
"thumbnail": {
"url": "https://static.rerun.io/ea7a9ab2f716bd37d1bbc1eabf3f55e4f526660e_helix_480w.png",
"url": "https://static.rerun.io/helix/f4c375546fa9d24f7cd3a1a715ebf75b2978817a/480w.png",
"width": 480,
"height": 285
}
Expand All @@ -84,7 +84,7 @@
"demo_url": "https://demo.rerun.io/version/nightly/examples/human_pose_tracking/",
"rrd_url": "https://demo.rerun.io/version/nightly/examples/human_pose_tracking/data.rrd",
"thumbnail": {
"url": "https://static.rerun.io/277b9c72da1d0d0ae9d221f7552dede9c4d5b2fa_human_pose_tracking_480w.png",
"url": "https://static.rerun.io/human_pose_tracking/37d47fe7e3476513f9f58c38da515e2cd4a093f9/480w.png",
"width": 480,
"height": 272
}
Expand All @@ -101,7 +101,7 @@
"demo_url": "https://demo.rerun.io/version/nightly/examples/plots/",
"rrd_url": "https://demo.rerun.io/version/nightly/examples/plots/data.rrd",
"thumbnail": {
"url": "https://static.rerun.io/ca0c72df93d70c79b0e640fb4b7c33cdc0bfe5f4_plots_480w.png",
"url": "https://static.rerun.io/plots/c5b91cf0bf2eaf91c71d6cdcd4fe312d4aeac572/480w.png",
"width": 480,
"height": 271
}
Expand All @@ -120,7 +120,7 @@
"demo_url": "https://demo.rerun.io/version/nightly/examples/structure_from_motion/",
"rrd_url": "https://demo.rerun.io/version/nightly/examples/structure_from_motion/data.rrd",
"thumbnail": {
"url": "https://static.rerun.io/033edff752f86bcdc9a81f7877e0b4411ff4e6c5_structure_from_motion_480w.png",
"url": "https://static.rerun.io/structure_from_motion/b17f8824291fa1102a4dc2184d13c91f92d2279c/480w.png",
"width": 480,
"height": 275
}
Expand Down
16 changes: 8 additions & 8 deletions docs/content/concepts/annotation-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ This is particularly useful for visualizing the output of classifications algori
but can be used more generally for any kind of reoccurring categorization within a Rerun recording.

<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/bb5f5e06931b4924ce3c0243d8285eee558e8f21_classids_480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/43c5455dd453e8a3668f0426c3d8961d22a5471e_classids_768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/c445af268f7700536bec97bd54134cfe5a48304e_classids_1024w.png">
<img src="https://static.rerun.io/7f881338f1970161f52a00f1ddd01d4dcccf8a46_classids_full.png" alt="viewer screenshot showing various tracked objects and their class ids">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/classids/7f881338f1970161f52a00f1ddd01d4dcccf8a46/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/classids/7f881338f1970161f52a00f1ddd01d4dcccf8a46/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/classids/7f881338f1970161f52a00f1ddd01d4dcccf8a46/1024w.png">
<img src="https://static.rerun.io/classids/7f881338f1970161f52a00f1ddd01d4dcccf8a46/full.png" alt="viewer screenshot showing various tracked objects and their class ids">
</picture>


Expand All @@ -39,7 +39,7 @@ Just as with labels & colors this allows you to use the same connection informat
Keypoints are currently only applicable to 2D and 3D points.

<picture>
<img src="https://static.rerun.io/98b627503df82a6e04c01133dcf6395b040cbd53_keypoints_full.png" alt="keypoint shown on a 3d skeleton">
<img src="https://static.rerun.io/keypoints/07b268032ab7cd26812de6b83e018b8ab55ed2f2/full.png" alt="keypoint shown on a 3d skeleton">
</picture>


Expand Down Expand Up @@ -75,9 +75,9 @@ you can explicitly determine the color of each class.
* Rust: Log a [`Tensor`](https://docs.rs/rerun/latest/rerun/components/struct.Tensor.html) with [`TensorDataMeaning::ClassId`](https://docs.rs/rerun/latest/rerun/components/enum.TensorDataMeaning.html#variant.ClassId)

<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/b1da782a05e2f7c0048f4bddf9ea29fef7c80b4e_segmentation_image_480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/f63cb085ee392f38e6431ab7e8c79aecb1b4e6e1_segmentation_image_768w.png">
<img src="https://static.rerun.io/716eeff1a99f51a6e77fca85c4e7dccf76b77c69_segmentation_image_full.png" alt="screenshot of a segmentation image">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/segmentation_image/f48e7db9a1253f35b55205acd55d4b84ab1d8434/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/segmentation_image/f48e7db9a1253f35b55205acd55d4b84ab1d8434/768w.png">
<img src="https://static.rerun.io/segmentation_image/f48e7db9a1253f35b55205acd55d4b84ab1d8434/full.png" alt="screenshot of a segmentation image">
</picture>


60 changes: 30 additions & 30 deletions docs/content/getting-started/logging-python.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,11 @@ Now you can run your application just as you would any other python script:
And with that, we're ready to start sending out data:

<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/b509f0c8ba4a46ed8ffd68bea4ade384525a41a1_logging_data2_waiting_480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/89b4674ee51f3f5365bad2347bc3f7319ff8de0f_logging_data2_waiting_768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/349e38deb9307100471b66becd6fab5d09dae80f_logging_data2_waiting_1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/4820da379135db095f0d160550245114e6257400_logging_data2_waiting_1200w.png">
<img src="https://static.rerun.io/a45b879f74828ff22d0767c7892bffb17a0ac25f_logging_data2_waiting_full.png" alt="screenshot of the waiting screen">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/logging_data2_waiting/51c09ff974ee4789c0e500af5b8fa347c5294ac0/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/logging_data2_waiting/51c09ff974ee4789c0e500af5b8fa347c5294ac0/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/logging_data2_waiting/51c09ff974ee4789c0e500af5b8fa347c5294ac0/1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/logging_data2_waiting/51c09ff974ee4789c0e500af5b8fa347c5294ac0/1200w.png">
<img src="https://static.rerun.io/logging_data2_waiting/51c09ff974ee4789c0e500af5b8fa347c5294ac0/full.png" alt="screenshot of the waiting screen">
</picture>


Expand Down Expand Up @@ -102,11 +102,11 @@ Run your script once again and you should now see this scene in the viewer.
Note that if the viewer was still running, Rerun will simply connect to this existing session and replace the data with this new [_recording_](../concepts/apps-and-recordings.md).

<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/5305cec597b9957036291198402d5afbbcce218e_logging_data3_first_points_480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/5fa88ed6192920f6162b7080928aa538ae2025dd_logging_data3_first_points_768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/9a87ed7e20b72902c6506a87fda3d62f716eed88_logging_data3_first_points_1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/b32a40031e47a4aa3b1669bef53048765c1b7b10_logging_data3_first_points_1200w.png">
<img src="https://static.rerun.io/0e0fada083d59cf14ad20ed0ee50ef88a9550d82_logging_data3_first_points_full.png" alt="screenshot after logging the first points">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/logging_data3_first_points/bb8ec9fb325e7912124d1d5dbbaf6f52178046b8/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/logging_data3_first_points/bb8ec9fb325e7912124d1d5dbbaf6f52178046b8/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/logging_data3_first_points/bb8ec9fb325e7912124d1d5dbbaf6f52178046b8/1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/logging_data3_first_points/bb8ec9fb325e7912124d1d5dbbaf6f52178046b8/1200w.png">
<img src="https://static.rerun.io/logging_data3_first_points/bb8ec9fb325e7912124d1d5dbbaf6f52178046b8/full.png" alt="screenshot after logging the first points">
</picture>


Expand Down Expand Up @@ -169,11 +169,11 @@ Once again, although we are getting fancier and fancier with our [`numpy` incant
there is nothing new here: it's all about building out `numpy` arrays and feeding them to the Rerun API.

<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/5ad83403acc560dac2bd85211419482c60019783_logging_data5_beads_480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/cdec3af724a3ceff147c1c6fd6cc9dbc51a2204d_logging_data5_beads_768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/cb272220c85e3376c75fd6da7f18462b920e172a_logging_data5_beads_1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/de68973ad6420112eba8b91217d9f4713d5d9a02_logging_data5_beads_1200w.png">
<img src="https://static.rerun.io/7825d736cb8b7dab27f27aa7611c4bac24f23433_logging_data5_beads_full.png" alt="screenshot after logging beads">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/logging_data5_beads/af49e7cd040ec6caab56ec3e45a732a943341088/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/logging_data5_beads/af49e7cd040ec6caab56ec3e45a732a943341088/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/logging_data5_beads/af49e7cd040ec6caab56ec3e45a732a943341088/1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/logging_data5_beads/af49e7cd040ec6caab56ec3e45a732a943341088/1200w.png">
<img src="https://static.rerun.io/logging_data5_beads/af49e7cd040ec6caab56ec3e45a732a943341088/full.png" alt="screenshot after logging beads">
</picture>


Expand All @@ -186,11 +186,11 @@ Up until this point, we've completely set aside one of the core concepts of Reru
Even so, if you look at your [Timeline View](../reference/viewer/timeline.md) right now, you'll notice that Rerun has kept track of time on your behalf anyways by memorizing when each log call occurred.

<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/720e5ba4d1881f88e1f0dd3342c52f3b472b70c6_logging_data6_timeline_480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/96bdee91b139b19023524bc6954798005a24f298_logging_data6_timeline_768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/c824ea981c457ee11c03b10645245b51e75de428_logging_data6_timeline_1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/d8dcfc5d19865d0c50f43d377fbbcad027d44bf3_logging_data6_timeline_1200w.png">
<img src="https://static.rerun.io/37fbc6fcbe8e89b2267057e3eae2e56b8d9ddf42_logging_data6_timeline_full.png" alt="screenshot of the beads with the timeline">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/logging_data6_timeline/f22a3c92ae4f9f3a04901ec907a245e03e9dad68/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/logging_data6_timeline/f22a3c92ae4f9f3a04901ec907a245e03e9dad68/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/logging_data6_timeline/f22a3c92ae4f9f3a04901ec907a245e03e9dad68/1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/logging_data6_timeline/f22a3c92ae4f9f3a04901ec907a245e03e9dad68/1200w.png">
<img src="https://static.rerun.io/logging_data6_timeline/f22a3c92ae4f9f3a04901ec907a245e03e9dad68/full.png" alt="screenshot of the beads with the timeline">
</picture>


Expand Down Expand Up @@ -220,11 +220,11 @@ A call to [`set_time_seconds`](https://ref.rerun.io/docs/python/latest/common/ti
⚠️ If you run this code as is, the result will be.. surprising: the beads are animating as expected, but everything we've logged until that point is gone! ⚠️

<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/af29a2c3ed2c7a829cd91c2ad11d38f4418b9b23_logging_data7_wat_480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/a46e9b2e7cc03366712fc0d3e3bc5bcb1efb406c_logging_data7_wat_768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/398fb5f7164b6ccf010e4af8b5c761818bf015a1_logging_data7_wat_1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/263d82b50e184ecb4d83350a1ef8b89b5a4d7b5f_logging_data7_wat_1200w.png">
<img src="https://static.rerun.io/74239084e9e45d2a0187b5e5e944063e3c8df5fa_logging_data7_wat_full.png" alt="screenshot of the surprising situation">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/logging_data7_wat/2a3b65f4a0e1e948184d85bab497e4bffdda0b7e/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/logging_data7_wat/2a3b65f4a0e1e948184d85bab497e4bffdda0b7e/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/logging_data7_wat/2a3b65f4a0e1e948184d85bab497e4bffdda0b7e/1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/logging_data7_wat/2a3b65f4a0e1e948184d85bab497e4bffdda0b7e/1200w.png">
<img src="https://static.rerun.io/logging_data7_wat/2a3b65f4a0e1e948184d85bab497e4bffdda0b7e/full.png" alt="screenshot of the surprising situation">
</picture>


Expand All @@ -240,11 +240,11 @@ rr.set_time_seconds("stable_time", 0)
```

<picture>
<source media="(max-width: 480px)" srcset="https://static.rerun.io/6c6918d4e1c33dc321d15e8746753ed2b1ca2037_logging_data8_latest_at_480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/73755db0243987f750f620c34d2b5f67e47c6ab4_logging_data8_latest_at_768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/72d2625d37ed6b149a4f5c016768d300c36a9bee_logging_data8_latest_at_1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/a9559392295bc0bfc75da81badae2ae053f707e7_logging_data8_latest_at_1200w.png">
<img src="https://static.rerun.io/0a7c2f339aaff03c3ccf82d5686f3af2c19a00a7_logging_data8_latest_at_full.png" alt="screenshot after using latest at">
<source media="(max-width: 480px)" srcset="https://static.rerun.io/logging_data8_latest_at/295492c6cbc68bff129fbe80bf861793b73b0d29/480w.png">
<source media="(max-width: 768px)" srcset="https://static.rerun.io/logging_data8_latest_at/295492c6cbc68bff129fbe80bf861793b73b0d29/768w.png">
<source media="(max-width: 1024px)" srcset="https://static.rerun.io/logging_data8_latest_at/295492c6cbc68bff129fbe80bf861793b73b0d29/1024w.png">
<source media="(max-width: 1200px)" srcset="https://static.rerun.io/logging_data8_latest_at/295492c6cbc68bff129fbe80bf861793b73b0d29/1200w.png">
<img src="https://static.rerun.io/logging_data8_latest_at/295492c6cbc68bff129fbe80bf861793b73b0d29/full.png" alt="screenshot after using latest at">
</picture>


Expand Down
Loading

0 comments on commit 6cf6902

Please sign in to comment.