Come ridimensionare un’immagine ad una dimensione di file specifico?
Vorrei ridimensionare un’immagine ad una dimensione di file specifico. Per esempio, non più di 200KB.
Qual è l’approccio migliore per raggiungere questo obiettivo con C# .NET ?
Grazie !
- In che formato? PNG? JPEG?
- Definire “migliore”: più Veloce, migliore qualità visiva, il minimo uso di memoria, utilizzo minimo della CPU?
- Il formato JPEG (questo è davvero diverso con altri formati ?). “Migliore” -> 1. migliore qualità visiva 2. più veloce
- Sì, è diverso, come si può regolare la compressione, da varie quantità per soddisfare le dimensioni di destinazione a seconda del formato di output scelto.
Se ci pensate, non si sta andando a conoscere la dimensione dell’immagine fino a dopo è ridimensionata. Così avete ottenuto per eseguire una successiva iterazione di tentativi e di confrontare le dimensioni dei file in seguito o si può cambiare la tua vincoli per limitare le immagini di un particolare insieme di dimensioni altezza e larghezza.
Vedere Come ridimensionare un’immagine in C# per una certa dimensione del disco rigido
Se questa non è una funzione molto importante, la prova e l’errore funziona abbastanza bene. Solo supporre che, se è necessario ridurre l’input per
N * 100%
, è fare in modo da scala entrambe le dimensioni dasqrt(N) * 100%
.Se è importante, è necessario capire le tecnologie di compressione immagini migliori. Darò per scontato JPG. È un formato di immagine che achievs di compressione lossy, suddividendo l’immagine in blocchi di 8×8 pixel, DFT, trasformandoli, buttando via il piccolo coefficienti, e quindi la compressione risultante bitstream.
Ora ne segue che si può smanettare un po ‘ con il livello di qualità, come molti dei piccoli coefficienti di buttare via. Non hai bisogno di rifare il (costoso) DFT per questo. Quindi, se il file che termina leggermente troppo grande, si può buttare via un paio di più coefficienti e ricomprimere. E se si fosse leggermente aggressiva, poi mettere un paio di coeffecients e comprimere di nuovo. Questo è tutto abbastanza veloce.
Si può fare molto con il Di disegno.Immagine classe, per poter ridimensionare un immagine.
Ci sono molte domande su come fare. Qui è uno.
In termini di dimensioni – non si sa quale sia la dimensione è fino a dopo l’operazione di ridimensionamento. L’unico modo per essere sicuri è quello di ridimensionare, controllare il risultato e se è troppo grande provare a ridimensionare con una qualità inferiore. Ripetere fino a quando fatto.
Si può approssimare le dimensioni, se si conoscono le dimensioni e la profondità di colore, come descritto nelle risposte alle questo (identico?) domanda.
Una stima approssimativa è come segue:
size(KB) = (width * height * bitdepth) /(8 * 1024)
La dimensione del file è gonfiato un po ‘ di più a causa di file di informazioni (la compressione di informazioni, ecc).