domenica 26 novembre 2017

.Net UWP una app per gestire video ed audio

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_net-46-realizzare-una-app-per-la-gestion_1541.aspx


In questo articolo vedremo come realizzare in Visual Studio 2017, versione community, un progetto di tipo app, in particolare una Universal Windows Platform (UWP) tramite il linguaggio di programmazione VB.Net e C#.

Creazione del progetto

Si crea un nuovo progetto di tipo Universal Windows Platform, tramite il linguaggio di proprio gradimento.
Dopo la creazione selezioniamo il file di tipo “MainPage.xaml”.

Stesura del codice

Dopo aver selezionato il file di tipo “MainPage.xaml” che permette di visualizzare la parte grafica della nostra app, aggiungiamo un controllo di tipo pulsante ed un controllo di tipo Textblock, dove verrà riportato del testo. A questo punto dopo aver selezionato il controllo pulsante,  nella finestra delle proprietà, facciamo doppio click sull’evento “Click” in modo che viene visualizzata la parte del codice.
Qui di seguito si riporta il frammento di codice dell’evento click di tale pulsante, per entrambi i linguaggi.



VB.Net

Private Async Sub button_Click(sender As Object, e As RoutedEventArgs)

        Dim mediaElement As New MediaElement()

        Dim synthSpeech = New Windows.Media.SpeechSynthesis.SpeechSynthesizer()

        Dim streamSpeechSynthesis As Windows.Media.SpeechSynthesis.SpeechSynthesisStream = Await synthSpeech.SynthesizeTextToStreamAsync("Ciao ragazzi!")

        mediaElement.SetSource(streamSpeechSynthesis, streamSpeechSynthesis.ContentType)

        mediaElement.Play()

        textBlock.Text = mediaElement.NaturalDuration.TimeSpan.TotalMilliseconds.ToString()

    End Sub

C#

private async void button_Click(object sender, RoutedEventArgs e)

        {

            MediaElement mediaElement = new MediaElement();

            var synthSpeech = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

            Windows.Media.SpeechSynthesis.SpeechSynthesisStream streamSpeechSynthesis = await synthSpeech.SynthesizeTextToStreamAsync("Ciao ragazzi!");

            mediaElement.SetSource(streamSpeechSynthesis, streamSpeechSynthesis.ContentType);

            mediaElement.Play();

            textBlock.Text =  mediaElement.NaturalDuration.TimeSpan.TotalMilliseconds.ToString();

        }



Come si vede dal codice precedente, si crea un oggetto di tipo “MediaElement”, uno di tipo SpeechSyntesizer con il quale andremo ad eseguire la lettura del testo tramite voce di default del pc.
Il metodo “Play” permette l’esecuzione della riproduzione del testo tramite voce.
Aggiungiamo nella nostra pagina, o form, tre pulsanti, ed un controllo di tipo “mediaElement”.
I pulsanti, avranno il compito rispettivamente di avviare l’esecuzione di un video, di metterlo in pausa o di fermarlo.
Mentre il controllo di tipo “MediaElement” di visualizzare il video.
Aggiungiamo nel nostro progetto, anche un file di tipo video.
Impostiamo nei vari pulsante, la proprietà “text” con i valori “Play”, “Ferma” e “Pausa” per ogni pulsante.
Qui di seguito si riporta il codice completo per la parte XAML



 Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

        <Button x:Name="button" Content="Messaggio" HorizontalAlignment="Left" Margin="55,237,0,0" VerticalAlignment="Top" Click="button_Click"/>

        <MediaElement x:Name="mediaElementControl" Source="Media\WP_20170505_001.mp4" HorizontalAlignment="Left" Height="100" Margin="155,210,0,0" VerticalAlignment="Top" Width="100" MediaOpened="mediaElement_MediaOpened"/>

        <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="55,269,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/>

        <Button x:Name="BtnPlay" Content="Play" HorizontalAlignment="Left" Margin="55,294,0,0" VerticalAlignment="Top" Click="BtnPlay_Click"/>

        <Button x:Name="BtnPausa" Content="Pausa" HorizontalAlignment="Left" Margin="55,331,0,0" VerticalAlignment="Top" Width="62" Click="BtnPausa_Click"/>

        <Button x:Name="BtnFerma" Content="Ferma" HorizontalAlignment="Left" Margin="55,368,0,0" VerticalAlignment="Top" Click="BtnFerma_Click"/>

 

    </Grid


Per il pulsante “Play” facciamo doppio click sull’evento click, in modo che passiamo in visualizzazione codice e scriviamo le istruzioni per avviare il video.


VB.Net

Private Sub BtnPlay_Click(sender As Object, e As RoutedEventArgs)

        mediaElementControl.Play()

       

    End Sub

C#

private void BtnPlay_Click(object sender, RoutedEventArgs e)

        {

            mediaElementControl.Play();

            

        }


Nel frammento di codice precedente, viene eseguito il metodo “Play” del controllo “MediaElement” posizionato in precedenza, ed impostato il percorso e nome del file video nella proprietà “Source”
Per ogni evento click del pulsante, utilizzeremo eventi, quale quello di pausa o ferma esecuzione del video, del controllo MediaElement.
Qui di seguito il frammento di codice di tali istruzioni.



VB.Net

Private Sub BtnPausa_Click(sender As Object, e As RoutedEventArgs)

        mediaElementControl.Pause()

 

    End Sub

 

    Private Sub BtnFerma_Click(sender As Object, e As RoutedEventArgs)

        mediaElementControl.Stop()

    End Sub

C#

   private void BtnFerma_Click(object sender, RoutedEventArgs e)

        {

            mediaElementControl.Stop();

        }

 

        private void BtnPausa_Click(object sender, RoutedEventArgs e)

        {

            mediaElementControl.Pause();

        }


Vediamo per concludere l’evento “MediaOpened” che si verifica quando il controllo MediaElement, prende lo stato attivo, ossia carica nella parte grafica l’immagine.


VB.Net

Private Sub mediaElement_MediaOpened(sender As Object, e As RoutedEventArgs)

        textBlock.Text = mediaElementControl.NaturalDuration.TimeSpan.TotalSeconds.ToString()

    End Sub

C#

private void mediaElement_MediaOpened(object sender, RoutedEventArgs e)

        {

            textBlock.Text = mediaElementControl.NaturalDuration.TimeSpan.TotalSeconds.ToString();

 

        }




Ora non ci resta che eseguire la nostra applicazione, ricordandoci di impostare nel nostro sistema operativo Windows 10 la modalità sviluppatore che permette l’esecuzione delle APP, in modo che possiamo testarle sul nostro dispositivo.

Conclusioni

L’articolo ha voluto fornire al lettore le basi per la multimedialità in particolare la gestione dei video, ed il sistema vocale, per rendere le nostre applicazioni di tipo  app con funzionalità vocale.
Le potenzialità offerte dal nuovo .Net, in particolare delle UWP, sono notevoli offrendo ai programmatori classi, di grande utilità che permettono di utilizzare a pieno le funzionalità offerte dal nuovo sistema operativo Windows 10.
La parte che riguarda la multimedialità offre molto e si possono creare applicazioni di una certa complessità, l'articolo ha voluto solo fornire al lettore come con poco si possono creare applicazioni di un certo tipo.

sabato 25 novembre 2017

strumento gratuito per rilevare il testo da un file immagine free ocr



Oggi vi segnalo uno strumento online per rilevare da un file immagine il testo.
Il sito http://www.i2ocr.com/free-online-italian-ocr offre  uno strumento molto valido, dopo aver selezionato la lingua del testo presente nel file immagine (c'è anche l'italiano) il passaggio successivo, sarà quello di selezionare il file, se sul pc, oppure on line, a questo punto il formato di output, ossia in quale formato si vuole estrae il testo, se word, testo, etc.

Un sito molto potente ed interessante, da tenere nei preferiti.


lunedì 20 novembre 2017

Evento gratuito sullo IOT

IOTHINGS Rome 2017

Un grande evento quello che si terrà il 21 e 22 novembre 2017 a Roma.
L'evento Iothings Rome 2017 qui http://www.iothingsrome.com/ il sito ufficiale è una bellissima iniziativa gratuita di formazione in ambito delle internet delle cose, nel quale le persone possono scoprire questo mondo.
Per iscrizioni e maggiori informazioni visitate il sito indicato.

domenica 19 novembre 2017

PostgreSQL select with clause where in

L'esempio qui di seguito, riguarda la possibilità di utilizzare la clausola Where e parola chiave in, con il database PostgreSQL.

select * from NomeTabella where   lower(NomeColonna) in ('Valore1','Valore2','Valore3')



sabato 18 novembre 2017

PostgreSql cancellare più record con condizioni in

Nel caso che stiamo utilizzando il database PostGreSql e vogliamo eliminare ne record che hanno come condizione valori diversi, dobbiamo utilizzare la parola chiave array con ilike.

Qui di seguito un esempio

delete from NomeTabella where NomeCampo ilike any  (array['%Ast%', '%Bic%', '%tavol%','%Mioten%','%Tes%'])

In questo modo verranno eliminati tutti quei record che hanno nel campo i valori presenti nella clausola.

venerdì 17 novembre 2017

Download browser Opera

Download Opera browser for Windows
Il nuovo browser Opera scaricabile qui http://www.opera.com/it permette una navigazione del web sicura e veloce.
Oltre alle varie funzionalità comuni agli altri browser, offre un valido supporto per la gestione delle reti VPN.
Il tutto gratuitamente, un browser che non richiede nessuna registrazione o altro.

giovedì 16 novembre 2017

free ebook linguaggio di programmazione Scala

Scala Succinctly

Un ebook di oltre 100 pagine in lingua inglese sul linguaggio di programmazione Scala.
L'ebook scaricabile gratuitamente qui https://www.syncfusion.com/resources/techportal/details/ebooks/scala_succinctly in formato pdf o per dispositivi mobile, fornisce le basi di questo linguaggio.

mercoledì 15 novembre 2017

download gratuito di clipart

Se state cercando un sito per poter scaricare gratuitamente delle clipart, con possibilità di modificarle on line, il seguente sito http://www.i2clipart.com/  offre una vasta raccolta di immagini clipart, suddivisi in categorie, oppure ricercarli tramite parola chiave.
Il sito è in lingua inglese.

martedì 14 novembre 2017

.Net iTextSharp Unire due file PDF aggiungendo una filigrana in VB.Net e C#

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_net-unire-due-file-pdf-aggiungendo-una-f_1540.aspx

In questo articolo vedremo come gestire un file pdf tramite la libreria gratuita iTextSharp per aggiungere una filigrana tramite file PDF o immagine.
Può capitare nei file pdf che abbiamo creato, di aggiungere nella stessa pagina un altro file pdf, sovrapponendolo con un certo livello di trasparenza, oppure aggiungere un file immagine, che può essere il logo o altra immagine.

Stesura del codice

In Visual Studio 2017, create un nuovo progetto di tipo Windows Application, ricordando che tale codice si può utilizzare anche in ambiente web, in particolare con la tecnologia Asp.Net.
Dopo aver creato il progetto con il linguaggio di programmazione di proprio interesse, aggiungiamo il riferimento alla libreria iTextSharp la quale fornisce proprietà e metodi per la gestione dei file “PDF”.
Dopo aver aggiunto tale riferimento, nella parte visiva della form, aggiungiamo due pulsanti, uno servirà per creare un nuovo file PDF con una filigrana presa da un file “Pdf” e l’altro da un file di tipo immagine.
Dopo aver aggiunto i due pulsanti, facciamo doppio click sul pulsante ed in visualizzazione codice, scriviamo lo spazio dei nomi per gestire le classi della libreria per la gestione dei file pdf e per la gestione dei file in generale.
Qui di seguito si riporta la dichiarazione per entrambi i linguaggi.


Vb.Net

Imports System.IO

Imports iTextSharp

Imports iTextSharp.text.pdf

C#

using iTextSharp.text.pdf;

using System.IO;

A questo punto nell’evento click del primo pulsante, che abbiamo appena generato, scriviamo il codice, con il quale si elabora un file pdf già esistente, tramite la classe pdfreader, e tramite la classe "pdfStamper" viene gestita la filigrana.
Nel codice avremmo due oggetti di tipo pdfreader, con il quale andremo a gestire un file “Pdf” esistente contenente le informazioni su cui applicare la prima pagina di un altro file pdf esistente. In brevi parole uniremo due file pdf, da cui se ne crea un nuovo tramite la classe "PdfStamper".
La classe "pdfcontentByte" permette la gestione l’elaborazione dei file pdf da unire, mentre la classe pdfgstate la gestione della trasparenza.
Qui di seguito si riporta il codice per entrambi i linguaggi di programmazione.


VB.Net

Private Sub BtnGenera_Click(sender As Object, e As EventArgs) Handles BtnGenera.Click

        'File nel quale inserire la filigrana

        Dim pdfReader As New PdfReader("C:\test\filepdf.pdf")

        'File nuovo con la filigrana applicata

        Dim pdfStamper As New PdfStamper(pdfReader, New FileStream("C:\test\NuovoFilePdf.pdf", FileMode.Create))

        'file pdf con la filigrana da applicare

        Dim pdfReaderFiligrana As New PdfReader("C:\test\filePdfConFiligrana.pdf")

        'byte del filigrana

        Dim filigranaDaApplicare As PdfContentByte

        'Applico la filigrana per ogni pagina

        For ContaPagine As Integer = 1 To pdfReader.NumberOfPages

            filigranaDaApplicare = pdfStamper.GetOverContent(ContaPagine)

            Dim gsTrasparenza As New PdfGState() With {

                .FillOpacity = 0.5F

            }

            filigranaDaApplicare.SetGState(gsTrasparenza)

 

            filigranaDaApplicare.AddTemplate(pdfStamper.GetImportedPage(pdfReaderFiligrana, 1), 0, 0)

        Next

 

        pdfStamper.FormFlattening = True

        pdfStamper.Close()

        pdfReader.Close()

        pdfReaderFiligrana.Close()

    End Sub

C#

private void BtnGenera_Click(object sender, EventArgs e)

        {

            //File nel quale inserire la filigrana

            PdfReader pdfReader = new PdfReader("C:\\test\\filepdf.pdf");

            //File nuovo con la filigrana applicata

            PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream("C:\\test\\NuovoFilePdf.pdf", FileMode.Create));

            //file pdf con la filigrana da applicare

            PdfReader pdfReaderFiligrana = new PdfReader("C:\\test\\filePdfConFiligrana.pdf");

            //byte del filigrana

            PdfContentByte filigranaDaApplicare;

            //Applico la filigrana per ogni pagina

            for (int ContaPagine = 1; ContaPagine <= pdfReader.NumberOfPages; ContaPagine++)

            {

                filigranaDaApplicare = pdfStamper.GetOverContent(ContaPagine);

                PdfGState gsTrasparenza = new PdfGState()

                {

                    FillOpacity = 0.5f

                };

                filigranaDaApplicare.SetGState(gsTrasparenza);

                filigranaDaApplicare.AddTemplate(pdfStamper.GetImportedPage(pdfReaderFiligrana, 1), 0, 0);

 

            }

 

            pdfStamper.FormFlattening = true;

            pdfStamper.Close();

            pdfReader.Close();

            pdfReaderFiligrana.Close();

 

 

 

        }




Il codice precedente tramite i commenti viene illustrata passo dopo passo le varie righe.
Da ricordare, che con il metodo “addTemplate” uniscono i due file Pdf, che poi verrà generato un nuovo file “Pdf”, mentre con il metodo close rilascio lo streamdati e libero la memoria.
Ritorniamo in visualizzazione della form, parte design, e facciamo click sul secondo pulsante, in modo che passiamo in visualizzazione codice nell’evento click di tale pulsante.
Il codice qui di seguito, è simile al precedente, con una piccola variazione, che anziché utilizzare un altro file pdf esistente, si utilizzerà un file immagine.




VB.Net

Private Sub BtnGeneraConLogo_Click(sender As Object, e As EventArgs) Handles BtnGeneraConLogo.Click

        'File nel quale inserire la filigrana

        Dim pdfReader As New PdfReader("C:\test\filepdf.pdf")

        'File nuovo con la filigrana applicata

        Dim pdfStamper As New PdfStamper(pdfReader, New FileStream("C:\test\NuovoFilePdf.pdf", FileMode.Create))

 

        'per la gestione  del logo

        Dim imageLogo As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance("C:\test\logo.jpg")

        imageLogo.SetAbsolutePosition(100, 100)

 

 

        'byte del filigrana

        Dim filigranaDaApplicare As PdfContentByte

        'Applico il logo per ogni pagina

        For ContaPagine As Integer = 1 To pdfReader.NumberOfPages

            filigranaDaApplicare = pdfStamper.GetOverContent(ContaPagine)

            Dim gsTrasparenza As New PdfGState() With {

                .FillOpacity = 0.5F

            }

            filigranaDaApplicare.SetGState(gsTrasparenza)

 

            filigranaDaApplicare.AddImage(imageLogo)

        Next

 

        pdfStamper.FormFlattening = True

        pdfStamper.Close()

        pdfRea

 

C#

private void BtnGeneraConLogo_Click(object sender, EventArgs e)

        {

            //File nel quale inserire la filigrana

            PdfReader pdfReader = new PdfReader("C:\\test\\filepdf.pdf");

            //File nuovo con la filigrana applicata

            PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream("C:\\test\\NuovoFilePdf.pdf", FileMode.Create));

           

            //per la gestione del logo

            iTextSharp.text.Image imageLogo = iTextSharp.text.Image.GetInstance("C:\\test\\logo.jpg");

            imageLogo.SetAbsolutePosition(100, 100);

 

 

            //byte del filigrana

            PdfContentByte filigranaDaApplicare;

            //Applico il logo per ogni pagina

            for (int ContaPagine = 1; ContaPagine <= pdfReader.NumberOfPages; ContaPagine++)

            {

                filigranaDaApplicare = pdfStamper.GetOverContent(ContaPagine);

                PdfGState gsTrasparenza = new PdfGState()

                {

                    FillOpacity = 0.5f

 

                    

                };

                filigranaDaApplicare.SetGState(gsTrasparenza);

                filigranaDaApplicare.AddImage(imageLogo);

 

            }

 

            pdfStamper.FormFlattening = true;

            pdfStamper.Close();

            pdfReader.Close();

            

        }


Come si è visto dal precedente codice, cambiando due righe di codice, in particolare aggiungendo la classe image ed utilizzando il metodo “AddImage” della classe pdfcontentyByte, il risultato è ben diverso.

Conclusioni


L’articolo ha voluto fornire delle indicazioni e tecniche di come utilizzare la libreria gratuita “ItextSharp” su aspetti non comuni della gestione dei file pdf, ma che possono rientrare in quei scenari lavorativi richiesti.
Applicando un logo o unire due file pdf, è cosa semplice nei file pdf, tramite questa libreria, cambiando solo alcune righe di codice, e scrivendo poco codice.
Una libreria completa che permette di realizzare anche complesse applicazioni, e fornisce al programmatore uno strumento di grande utilità.