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.
InformationsquelleAutor | 2010-01-19

 

5 Replies
  1. 3

    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.

    • Dopo il controllo di diversi metodi di ottenere dei risultati non soddisfacenti, ho deciso di limitare la larghezza e l’altezza 🙂
  2. 1

    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 da sqrt(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.

  3. 1

    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.

    • Suona come uno stupido modo per farlo, da un CompSci punto di vista.
    • Come si va su di predire il futuro, in un CompSci modo, che è?
    • Per cominciare, questo è unilaterale di approssimazione successiva algoritm (non c’è alcun controllo del troppo piccole di uscita e di cattiva qualità). Quindi è lento o soggette a superarlo. Il secondo problema è che se non colpisci il bersaglio al primo tentativo, dovrete rifare tutto.
  4. 0

    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).

    • -1 tipo di file di Cui si applica questo? Come sei arrivato a questa formula?
    • Funziona per non compresso immagine (es: BMP)

Lascia un commento