Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PhotoStyle Watch Face #2028

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

PhotoStyle Watch Face #2028

wants to merge 1 commit into from

Conversation

JenJell
Copy link

@JenJell JenJell commented Feb 23, 2024

This pull request introduces a digital watch face designed to display user-uploaded photos.
InfiniSim_2024-02-23_111015
I am uncertain if this is a watch face we want to add into the base InfiniTime. However, after developing it to test an image conversion function in InfiniLink, I thought it would be worthwhile to share it here to gather everyone’s thoughts on the concept.
Also, if this is something we want to add, I would appreciate any feedback on the design that could be improved or modified

watch_photo_real
This watch face has been tested on both the simulator and with real hardware.

A new watch face designed to have a custom photo as the background.
@JenJell JenJell marked this pull request as draft February 23, 2024 02:57
@joseph58tech
Copy link

I quite like this idea, how would we upload photos to the watch though? I know WaspOS has a gallery app but I've never looked into how exactly it works.

Copy link

github-actions bot commented Feb 23, 2024

Build size and comparison to main:

Section Size Difference
text 384592B 7512B
data 940B 0B
bss 63524B 8B

@JenJell
Copy link
Author

JenJell commented Feb 23, 2024

@joseph58tech, right now this watch face is looking for a photo at "images/watch_photo.bin" in the file system. So all that has to be done is to upload an image file into the right location using a companion app. Though, the image does need to be converted first before it is uploaded.

@joseph58tech
Copy link

@JenJell what companion app are you using?

@JenJell
Copy link
Author

JenJell commented Feb 23, 2024

@joseph58tech, for me, I am using a custom version of InfiniLink. However, if you want to achieve this without using an iPhone and Mac, you can convert your image file using an lvgl convertor like this online one or the lv_img_conv.py script. Make sure the image is 250x250 in size and use the color format CF_TRUE_COLOR or CF_TRUE_COLOR_ALPHA and output format Binary RGB565 Swap. Then send the image over to images/watch_photo.bin on the watch's file system using a companion app like ITD or Amazfish.

@joseph58tech
Copy link

@JenJell Ah, I'm on Android so I don't have the option to view the file system

@FintasticMan
Copy link
Member

On android you can use InfiniTimeExplorer in a Chromium-based browser

@everypizza1
Copy link
Contributor

everypizza1 commented Feb 25, 2024

I just tested it out on my watch, uploaded an image, and it crashed on selecting the face.

Update: it works!
IMG_20240225_110303.jpg

@JenJell
Copy link
Author

JenJell commented Feb 25, 2024

@everypizza1, glad it's working now. As for why it crashed, I believe that is related to this file system bug #2021.

@JumpLink
Copy link

JumpLink commented Mar 4, 2024

It would also be great to be able to upload several images depending on the time of day, e.g. background images with a moving sun could be used. The weather could also be included.

@joseph58tech
Copy link

On android you can use InfiniTimeExplorer in a Chromium-based browser

I had no idea this existed lol, now I can finally upload the resources file

@JumpLink
Copy link

JumpLink commented Mar 7, 2024

IMG_20240307_125414200.jpg

Works for me, too 🙃

@joseph58tech
Copy link

Sorry to bother, but how exactly would I get the files to load them to the watch?

@liamcharger
Copy link
Contributor

liamcharger commented Mar 7, 2024

You would need to find the image you want to upload to the watch, rescale it to 240 x 240, and convert it to the supported binary format using a tool like LVGL's image converter.

If you're using LVGL's converter, the color format is CF_TRUE_COLOR, and the output format is Binary RGB565 Swap.

@joseph58tech
Copy link

You would need to find the image you want to upload to the watch, rescale it to 240 x 240, and convert it to the supported binary format using a tool like LVGL's image converter.

I meant how do I load the watchface to the watch, I guess I worded that weird

@liamcharger
Copy link
Contributor

@JenJell I like this watchface a lot, but there is one issue: if the image is on the lighter side of the scale, the text is not legible. My suggestion would be using a text color selector, like the PineTimeStyle watchface.

@JenJell
Copy link
Author

JenJell commented Mar 7, 2024

@liamcharger, glad you like it! Although, I’ve actually already thought of that. Just perform a long press on the watch face to access it's settings.

@JenJell
Copy link
Author

JenJell commented Mar 7, 2024

You would need to find the image you want to upload to the watch, rescale it to 240 x 240, and convert it to the supported binary format using a tool like LVGL's image converter.

I meant how do I load the watchface to the watch, I guess I worded that weird

Currently to add this watch face, you would need to build your own version of InfiniTime with this pull request included.

@liamcharger
Copy link
Contributor

liamcharger commented Mar 7, 2024

@joseph58tech you can also use the build artifact from the GitHub workflow.

@joseph58tech
Copy link

Currently to add this watch face, you would need to build your own version of InfiniTime with this pull request included.

Oh so it's not a separate recourse file I can load then

@liamcharger
Copy link
Contributor

@liamcharger, glad you like it! Although, I’ve actually already thought of that. Just perform a long press on the watch face to access it's settings.

Oops, I missed that! That's embarrassing...😬

@JumpLink
Copy link

JumpLink commented Mar 8, 2024

Switching between the menus is slower than on other watch faces with my image, does the others have the same problem?

photo_face.mp4

@FintasticMan
Copy link
Member

Unfortunately that is to be expected, we had the same issue with the analog watch face until we replaced the background image with an implementation in lvgl.

@liamcharger
Copy link
Contributor

liamcharger commented Mar 8, 2024

@JenJell, one issue I noticed is that when using InfiniLink with the live watch faces, in the watch face setting list, this watch face is where the terminal face used to be, making InfiniLink pull the terminal watch face instead, and everything past the terminal is incorrect as well. So, my proposal would be moving it to the bottom of the watch face list so the live watch faces feature in InfiniLink isn't affected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants