2009-04-26 19 views
5

Ho un visualizzatore di immagini che ho scritto in Flex per ridimensionare le dimensioni dell'immagine attualmente visualizzata in base alle dimensioni del browser. Questo è ciò che il tag appare come:Qualità di ridimensionamento delle immagini Adobe Flex

<mx:Image id="img" 
    maintainAspectRatio="true" 
    source="{horizontalList.selectedItem.image}-large.jpg" 
    height="100%" 
    horizontalCenter="0" 
    horizontalAlign="center" 
    top="5" 
    width="{horizontalList.width}" 
    updateComplete="onImageChange()" 
    click="onImgClick()" 
    /> 

La dimensione dell'immagine originale è sempre più grande dell'area del browser, e, purtroppo, Flex non sembra stia facendo un ottimo lavoro di downscaling dell'immagine. In effetti, HTML in IE svolge un lavoro molto migliore se utilizzo il tag immagine. C'è un'impostazione di "qualità" per il ridimensionamento in Flex che mi manca?

Grazie.

risposta

0

Questo è un punto di disturbo con Flex 3 - utilizzando un'immagine in un controllo elenco. Devi stare molto attento a ottenere il ridimensionamento giusto.

Perché non provare a giocare con diverse combinazioni di scaleContent e maintainAspectRatio proprietà dei controlli Image?

Ecco un tutorial su scaling immagini.

+0

Grazie per la risposta. Il mio controllo immagine non è all'interno di un controllo elenco. Sta usando semplicemente un controllo di lista separato come riferimento alla dimensione stessa. Ho letto il tutorial che hai collegato, ma in realtà non parlava della qualità dell'immagine. La mia domanda di base è: come controllate la qualità quando si effettua il downscaling di un'immagine? Per impostazione predefinita, Flex sembra avere molti problemi di aliasing quando si riduce l'immagine. Grazie. –

0

tenta di impostare la larghezza e l'altezza del controllo alle dimensioni dell'immagine e impostare la proprietà scaleContent alla vera proprietà

0

set scaleContent true

1

Ulteriori informazioni lo Flash Smoothing Issue ho scoperto alcuni anni fa e ne ho parlato in forma blogger. Fondamentalmente, le immagini che hanno una dimensione dispari non riescono a essere lisciate.

Per risolvere questo problema utilizzare il seguente frammento:

var smoothBitmapData : BitmapData = new BitmapData(
    loadedBitmap.width + (loadedBitmap.width % 2), 
    loadedBitmap.height + (loadedBitmap.height % 2), 
    true, 0x00FF0000); 
smoothBitmapData.draw(loadedBitmap, null, null, null, null, true); 

smoothBitmap = new Bitmap(smoothBitmapData, PixelSnapping.NEVER, true); 
Problemi correlati