Domanda

Sto cercando di ridurre a livello di codice (con perdita) la dimensione dei file PNG e GIF.Per questo motivo devo ridurre il numero di colori nelle immagini.Non voglio ridurre tutte le immagini a un singolo valore di colore, quindi quello che sto facendo è;ottieni quindi il numero di colori univoci nell'immagine;dividi questo numero per 2 per ridurre della metà il numero di colori.

Il problema è che questo non funziona.L'uso di ImageMagic è troppo lento e non riduce la dimensione del file a meno che l'immagine non abbia meno di poche centinaia di colori unici.Utilizzando GraphicsMagick si ottiene sempre un valore di colori univoco inferiore a 255 indipendentemente dal numero di colori presenti nell'immagine originale.Un altro problema con GraphicsMagick è che se nell'immagine sono presenti pixel trasparenti, i colori persi vengono sostituiti con quelli trasparenti.

Qualsiasi aiuto sarebbe grato, grazie.

È stato utile?

Soluzione 3

Primo problema, GraphicsMagick può essere compilato utilizzando livelli quantistici a 8 bit, 16 bit o 32 bit.La mia versione è compilata a 8 bit (l'impostazione predefinita), ciò significa che il numero massimo di colori che possono essere assegnati a un'immagine è 256 colori univoci (3*3*2, 1 dei bit blu viene rimosso perché l'occhio umano può non lo vedo correttamente).Ovviamente, GraphicsMagick può gestire immagini con più colori di questi, ma quando si riducono i colori può ridurli solo a 256 o meno colori.Quantici di pixel più grandi fanno sì che GraphicsMagick venga eseguito più lentamente e richieda più memoria.Ad esempio, l'utilizzo di quanti di pixel a sedici bit fa sì che GraphicsMagick venga eseguito dal 15% al ​​50% più lentamente (e occupi il doppio della memoria) rispetto a quando è costruito per supportare quanti di pixel a otto bit.

Secondo problema;gestione della trasparenza nelle immagini PNG, stavo usando una versione precedente di GraphicsMagick (1.1 credo), comunque, quando ho aggiornato alla 1.3 questo problema non è più presente, il che mi dice che è stato un bug in GraphicsMagick 1.1 a causare questo.

Altri suggerimenti

La riduzione del numero di colori è utile solo se

  1. l'immagine può quindi utilizzare una tavolozza invece di memorizzare il colore per ciascun pixel
  2. le dimensioni di un indice di tavolozza è inferiore alla dimensione di un colore
  3. il formato di immagine supporta il formato tavolozza

penso che si può ottenere solo 1-bit, 4 bit, 8-bit, in modo a 2 colori, 16 colori, o 256 colori in questi formati. Penso che se si chiede di più, basta avere troncato a 256. Se chiedete per meno, semplicemente non utilizzare l'intero tavolozza.

Avete considerato la conversione in JPEG e giocare con l'impostazione di qualità? Si finisce con più fine controllo a grana di perdita-ness. Lo svantaggio è che se le immagini non sono le foto, ma suona come essi hanno un sacco di colori, in modo che possa essere.

Forse scegliere 1, 4, 8 bit se è vicino a quello che si vuole e jpeg se ha un sacco di colori.

Credo che l'impianto ImageMagick siete dopo potrebbe essere quantizzazione:

http://www.imagemagick.org/Usage/quantize/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top