Lavorare con immagini

Il Framework di AppStudio contiene una serie di funzioni tanto per estrarre informazioni dalle immagini quanto per modificarle all'interno dell'app.

Oggetti Image

È possibile visualizzare le immagini in un'app attraverso l'uso di un oggetto Image, che può quindi supportare ulteriori parametri per alterare la visualizzazione dell'immagine. La proprietà source fornisce la destinazione dell'immagine da visualizzare, mentre le altre proprietà descrivono i modi in cui l'immagine sarà visualizzata. Il seguente esempio di codice visualizza un'immagine specifica preservando il suo rapporto di aspetto e la allinea con il centro orizzontale e verticale dell'elemento del layout nel quale risiede:

Questo esempio di codice visualizza un'immagine specifica preservando il suo rapporto di aspetto e la allinea con il centro orizzontale e verticale dell'elemento del layout nel quale risiede.

Image {
    fillMode: Image.PreserveAspectFit
    source: "Example.png"
    horizontalAlignment: Image.AlignHCenter
    verticalAlignment: Image.AlignVCenter
    cache: false
    }
}

Per lavori più complessi con immagini, il componente ImageObject fornisce una serie di strumenti per ispezionare le proprietà di un'immagine o trasformare un'immagine. ImageObject archivia la propria immagine per impostazione predefinita. Il seguente esempio di codice dimostra il collegamento di ImageObject ad un'immagine visualizzata fornita altrove:

    //Create ImageObject instance
    ImageObject {
        id: imageObject
    }
    Image {
	id: displayedImage
        fillMode: Image.PreserveAspectFit
        source: imageObject.url //Set source to URL housed by ImageObject
        horizontalAlignment: Image.AlignHCenter
        verticalAlignment: Image.AlignVCenter
        cache: false
    }
}

Questo esempio di codice usa la funzione rotate di ImageObject in due pulsanti, per ruotare l'immagine di novanta gradi in entrambe le direzioni.

    Button {
        text: "Rotate Left"
        onClicked: {
            imageObject.rotate(-90); //Rotates 90 degrees left
            displayedImage.refresh(); //Refreshes displayed image
        }
    }
    Button {
        text: "Rotate Right"
        onClicked: {
            imageObject.rotate(90); //Rotates 90 degrees right
            displayedImage.refresh(); //Refreshes displayed image
        }
    }

ImageObject contiene una serie di funzioni dai nomi simili, che differiscono normalmente solo nel tempo verbale; ad esempio, mirror e mirrored. In questi casi, vi è una differenza nel tipo di risposta. Le funzioni dal nome al presente modificano direttamente l'oggetto immagine esistente, mentre le funzioni con i nomi al passato effettuano modifiche su una copia dell'oggetto immagine.

Metadati Exif

Le immagini possono anche includere metadati Exif, una serie di tag che contengono informazioni sull'immagine stessa. Molti di questi metadati vengono forniti automaticamente nelle foto scattate da fotocamere moderne e possono includere informazioni del GPS per descrivere il luogo in cui si è scattata l'immagine. Il Framework di AppStudio può leggere e scrivere su questi tag usando il componente ExifInfo.

Il Framework di AppStudio funziona con i tre tipi di tag Exif seguenti:

  • Tag immagine, come la risoluzione, la data e ora di creazione e la descrizione
  • Tag estesi, come la fonte di illuminazione, la velocità dell'otturatore e il modo di esposizione
  • Tag GPS, come la latitudine, la velocità e il dato mappa

Il seguente esempio di codice mostra come visualizzare i tag Exif di un'immagine selezionata attraverso una finestra di dialogo di un file, che può poi essere scritta nuovamente. Questo esempio usa la latitudine, la longitudine e l'altitudine ma è possibile modificarla per altri metadati.

    FileDialog { //Creates a platform-agnostic file choosing dialog
        id: loadDialog
        title: "Load Image"
        selectExisting: true
        selectMultiple: false
        nameFilters: [ "Image files (*.jpg *.png)", "All readable formats (All files (*)" ]
        folder: Qt.platform.os == "ios"
                ? "file:assets-library://"
                : AppFramework.standardPaths.standardLocations(StandardPaths.PicturesLocation)[0]
                    onAccepted: {
                        exifInfo.load(fileUrl);
                    }
    }
    ExifInfo { //Instantiates ExifInfo
    id: exifInfo
    }
    ColumnLayout {
        anchors {
            fill: parent
            margins: 10
        }
        TextField {
            text: exifInfo.gpsLatitude
            font.bold: true
        }
        TextField {
            text: exifInfo.gpsLongitude
            font.bold: true
        }
        TextField {
            text: exifInfo.gpsAltitude
            font.bold: true
        }
        Button {
        	text: "Load"
        	onClicked: {
        	    loadDialog.open();
        	}
	}
}


In questo argomento
  1. Oggetti Image
  2. Metadati Exif