Quando ci occupiamo di sviluppo di un'applicativo web, di un CMS o di frontend in generale, abbiamo sicuramente a che fare con la gestione delle immagini. Queste potrebbero essere molto pesanti e spesso potrebbe non essere necessario tenerle ad una risoluzione elevata (pensiamo, ad esempio, alle immagini dei link ai canali social). Altre volte,invece, potremmo avere necessità di un sistema che ci crei automaticamente delle thumbnail.
Grazie alle GitHub Action possiamo automatizzare la compressione delle immagini e di personalizzarne la qualità:
name: Compress Images on: pull_request: paths: - '**.jpg' - '**.jpeg' - '**.png' - '**.webp' jobs: build: if: github.event.pull_request.head.repo.full_name == github.repository runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@v2 - name: Compress Images uses: calibreapp/image-actions@main with: githubToken: ${{ secrets.GITHUB_TOKEN }}
Il workflow messo in esempio viene eseguito solamente in seguito ad una pull request generata sullo stesso repository, in cui sono state fatte modifiche a file di immagini (con estensioni .jpg, .png etc.). Una volta eseguito il clone del repository, andiamo quindi ad eseguire una Action custom che si occupa di recuperare le immagini, comprimerle e quindi aggiornare il repository stesso (da qui la richiesta del token di GitHub come parametro di input) e, di conseguenza, aggiornerà la pull request chiamante facendo vedere quali sono stati i file modificati e la percentuale di compressione/miglioramento.
La percentuale di compressione e la qualità di immagine finale sono chiaramente configurabili in input:
- name: Compress Images uses: calibreapp/image-actions@main with: githubToken: ${{ secrets.GITHUB_TOKEN }} compressOnly: false # evita di creare la PR di aggiornamento, così da poterla personalizzare in uno step successivo jpegQuality: '80' jpegProgressive: false pngQuality: '80' webpQuality: '80'
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
.NET Conference Italia 2023
Eseguire una query su SQL Azure tramite un workflow di GitHub
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Generare file PDF da Blazor WebAssembly con iText
Hosting di componenti WebAssembly in un'applicazione Blazor static
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Migrare una service connection a workload identity federation in Azure DevOps
Paginare i risultati con QuickGrid in Blazor
Installare le Web App site extension tramite una pipeline di Azure DevOps
I più letti di oggi
- PWAConf 2020 - Online
- Effettuare il binding di date in Blazor
- What's new in Azure Functions and Extensions
- Mantenere sempre reattiva una Lambda di AWS
- Proteggersi dagli attacchi di Open Redirect in ASP.NET Core MVC
- Gestire errori funzionali tramite exception in ASP.NET Core Web API
- Sblocca le performance della tua applicazione con .NET 8