Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C++] Si può editare un testo su un'immagine?

    Gentili Amici,

    programmando in C++ vorrei sovrapporre un testo, casomai con un Font particolare, su un'immagine bitmap gestita con le funzioni di FreeImage (che non prevede elaborazioni di grafica testuale).

    Mi sapreste dare suggerimenti su come fare? Ci sono delle librerie a riguardo? Esistono delle API Windows?

    Non ho proprio esperienza in merito.

    Vi ringrazio molto per l'aiuto che vorrete darmi.

    Maurizio

  2. #2

    Re: [C++] Si può editare un testo su un immagine?

    Originariamente inviato da Maurix1969
    Gentili Amici,

    programmando in C++ vorrei sovrapporre un testo, casomai con un Font particolare, su un'immagine bitmap gestita con le funzioni di FreeImage (che non prevede elaborazioni di grafica testuale).

    Mi sapreste dare suggerimenti su come fare? Ci sono delle librerie a riguardo? Esistono delle API Windows?

    Non ho proprio esperienza in merito.

    Vi ringrazio molto per l'aiuto che vorrete darmi.

    Maurizio
    È semplicissimo, in teoria.
    Crei un'immagine in cui metti le lettere, ogni lettera corrisponde a tot pixel; ad esempio una lettera corrisponde a 30px.
    Poi fai cosi:
    codice:
    function drawText(string input, int x, int y) {
    
       for i to len(input) {
    
          offset = (input[i] - 'a') * 30;
          //disegna sull'immagine i pixel contenuti da offset fino a offset + 30 alla posizione (x + i * 30, y)
    
       }
    
    }
    Ovviamente devi rispettare la trasparenza o settando il canale alpha oppurtunamente, oppure disegnando solo i pixel neri.

  3. #3
    menphisx,

    grazie dell'aiuto ma leggendo il tuo codice non capisco come inserire i singoli caratteri della stringa, ad esempio una "M" (eventualmente con un particolare font, la grandezza giusta... ) nell'area di memoria che nel ciclo dovrà essere sovrapposta all'immagine. I caratteri mica me li devo disegnare pixel a pixel?!

    Mi puoi dettagliare meglio? Per il resto il codice è chiaro.

    Grazie,

    Maurizio

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma perche' non usi le funzionalita' delle normali API GDI di Windows?

    Per visualizzare un testo c'e' la API DrawText
    http://msdn.microsoft.com/en-us/libr...09(VS.85).aspx

    Non so come funzionano le librerie che usi, ma penso proprio che potrai usare questa API ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Oregon,

    grazie del suggerimento. Non ho mai utilizzato le API Windows ma è la volta buona che inizio a provarle.

    In effetti cercavo una funzione di libreria come quella chi mi hai segnalato.

    Ora mi tocca capire come utilizzare la funzione e come integrarla al mio programma.

    Grazie molto,

    Maurizio

  6. #6
    Originariamente inviato da Maurix1969
    menphisx,

    grazie dell'aiuto ma leggendo il tuo codice non capisco come inserire i singoli caratteri della stringa, ad esempio una "M" (eventualmente con un particolare font, la grandezza giusta... ) nell'area di memoria che nel ciclo dovrà essere sovrapposta all'immagine. I caratteri mica me li devo disegnare pixel a pixel?!b

    Mi puoi dettagliare meglio? Per il resto il codice è chiaro.

    Grazie,

    Maurizio
    Si l'idea era quella.
    Per diseganre la 'M' alla posizione (x, y):
    Calcoli l'offset nel file file delle lettere. La 'M' è la 13 lettera, quindi si trovera a 13*30 px dall'inizio dell'immagine (se le singole lettere sono grandi 30 px in larghezza).
    Quindi prendi i pixel dal 13*30 px al 13*30 + 30 px in larghezza. L'altezza non è importante.
    Poi setti i valori dei pixel nell'immagine in qui vuoi inserire il testo, alla posizione (x, y), agli stessi valori dei pixel della lettera; rispettando la trasparenza (cioè disegni solo i pixel che hanno un colore, non quelli bianchi o nulli).
    L'idea era questa, semplice.
    Poi nessuno ti vieta di utilizzare le API Windows.


  7. #7
    Menphisx

    ancora non ho capito come riempire le singole aree di 30 bytes con i pixel originali dei font che vorrei. Tutto quello che dici mi è chiaro ma credo che tu non abbia inteso quello che ti chiedevo.

    In pratica, se voglio scrivere la parola "Mauri" nel font Arial sull'immagine, da dove copio i pixel che costituiscono la "M"? e poi la "a"? e così di seguito in Arial? Ho capito che devo riempire i pixel in una porzione di memoria per poi distribuirli a video. E questo lo saprei fare, ma da dove leggo (pixel per pixel) la forma del singolo carattere? Tutti i suoi pixel?

    Mica pixel per pixel mi devo costruire la MATRICE di tutte le lettere dell'alfabeto (o quantomeno della frase che voglio scrivere), in un particolare stile pieno, nella dimensione che mi serve?

    Al massimo, ridisegnando manualmente la matrice dei caratteri, si riuscirebbe a generare una scritta in uno stile molto rozzo e stilizzato e si avrebbe poi il problema del ridimensionamento e del consecutivo riempimento del carattere.

    Come vedi, non ho capito. Se invece si tratta di riscrivere i font, allora questa soluzione non è adatta al mio scopo.

    Aspetto un tuo commento.

    Grazie mille!

    Maurizio

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma non hai piu' provato ad utilizzare le API?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ciao Oregon,

    Il fatto è che stavo studiando i parametri della funzione API DrawText (da te suggerita) che non mi risultano immediati per il fatto, tra l'altro, che dovrei lavorare su un Bitmap dichiarato FIBITMAP *bitmap (in FreeImage).

    Tu hai qualche idea su come far puntare la funzione al mio Bitmap?

    Forse una soluzione (un pò macchinosa) sarebbe quella di salvare la mia Bitmap (su cui sto lavorando con FreeImage) e ricaricarla con una funzione API di Windows (ma quale?)

    Hai qualche idea o esempi in merito?

    Ti ringrazio molto e saluto.

    Maurizio

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma tu la bitmap la deve visualizzare con il testo? O la devi modificare e salvare?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.