Domanda

Supponiamo che io abbia una bitmap con un aspetto quadrato e una larghezza di 2048 pixel.

Per creare una serie di file necessari con DeepZoomImageTileSource di Silverlight, devo ridimensionare questa bitmap su 1024, poi su 512, quindi su 256 ecc. fino a 1 pixel di immagine.

Ci sono due approcci, sospetto ingenui,: -

  1. Per ogni immagine richiesta ridimensionare l'immagine originale a dimensione intera alla dimensione richiesta. Tuttavia, sembra eccessivo ridimensionare l'immagine intera in dimensioni molto ridotte.
  2. Dopo aver scalato da un livello a quello successivo, scartare l'immagine originale e ridimensionare ciascuna immagine ridimensionata successiva come sorgente dell'immagine successiva più piccola. Tuttavia, sospetto che ciò genererebbe immagini nell'intervallo 256-64 con scarsa fedeltà rispetto all'utilizzo dell'opzione 1.

Nota a differenza del Deep Zoom Composer, questo strumento dovrebbe agire in maniera on demand, quindi deve essere completato in un lasso di tempo ragionevole (massimo 30 secondi). Sul lato positivo sto solo creando una singola immagine multiscala, non una piramide di immagini multiple ad alta risoluzione.

Sono fuori dalla mia zona di comfort qui, qualche esperto di grafica ha qualche consiglio? Sbaglio sul punto 2? Il punto 1 è ragionevolmente performante e non mi preoccupo di nulla? Opzione 3?

È stato utile?

Soluzione

Circa 1: questo sembra il modo migliore. E non è eccessivo se non ricarichi l'immagine sorgente ogni volta.

Circa 2: Sì, perderai (in parte) la qualità ridimensionando i passaggi.

Penso che 30 secondi dovrebbero essere sufficienti per ridimensionare un'immagine (alcune volte). Qualsiasi ottimizzazione verrebbe nell'area della memorizzazione nella cache dei risultati.

Altri suggerimenti

Quello che stai essenzialmente cercando di fare è creare MipMaps (vedi http://en.wikipedia.org / wiki / mipmap ). Se inizi con una potenza di 2 immagini quadrate, ridimensiona l'immagine a metà della dimensione, quindi utilizzare l'immagine ridimensionata per ridurne di nuovo le dimensioni di 2 dovrebbe dare gli stessi risultati che prendere l'immagine originale e ridimensionarla di un fattore 4.

Ogni pixel nell'immagine di mezza dimensione sarà la media di 4 pixel nell'immagine originale. Ogni pixel nell'immagine di dimensioni quater sarà la media di 16 pixel. Non importa se prendi la media di 16 pixel o la media di 4 pixel che è la media di altri 4 pixel.

Quindi direi che andresti bene ridimensionando successivamente le immagini come hai menzionato nell'opzione 2. Se vuoi essere sicuro, prova entrambi i modi e confronta le immagini.

Mi rendo conto che questa domanda è vecchia, e forse c'è un motivo per cui non l'hai fatto, ma se ottieni il Deep Zoom Composer gratuito di Microsoft, viene fornito con una DLL per creare Deep Zoom, "DeepZoomTools.dll". Creerà composizioni Deep Zoom di una singola immagine o compositi di molte immagini. (La classe ImageCreator svolge il lavoro pesante di ridimensionamento delle immagini).

Dovresti indagare sulle implicazioni della licenza se stai sviluppando un'applicazione commerciale, ma riutilizzare il codice è sempre meglio che scriverlo tu stesso.

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