Ho bisogno di aggiungere del testo a un file immagine. Ho bisogno di leggere un file immagine (jpg, png, gif) e ho bisogno di aggiungere un testo di riga ad esso.Aggiunta di testo a un file immagine
risposta
È possibile farlo utilizzando l'oggetto Graphics in C#. È possibile ottenere un oggetto grafico dall'immagine (image.CreateGraphics() - o qualcosa di simile come ricordo) e utilizzare alcuni dei metodi incorporati per aggiungere testo come: Graphycs.DrawString() o altri metodi correlati.
Bene in GDI + si legge nel file utilizzando una classe Image e quindi si utilizza la classe Graphics per aggiungere del testo. Qualcosa di simile:
Image image = Image.FromFile(@"c:\somepic.gif"); //or .jpg, etc...
Graphics graphics = Graphics.FromImage(image);
graphics.DrawString("Hello", this.Font, Brushes.Black, 0, 0);
Se si desidera salvare il file su quello vecchio, il codice deve cambiare un po 'come il metodo Image.FromFile() blocca il file finché non è smaltito. Quello che segue è ciò che mi si avvicinò con:
FileStream fs = new FileStream(@"c:\somepic.gif", FileMode.Open, FileAccess.Read);
Image image = Image.FromStream(fs);
fs.Close();
Bitmap b = new Bitmap(image);
Graphics graphics = Graphics.FromImage(b);
graphics.DrawString("Hello", this.Font, Brushes.Black, 0, 0);
b.Save(@"c:\somepic.gif", image.RawFormat);
image.Dispose();
b.Dispose();
ho iniziato ad esaminare questo abbastanza a fondo però :)
Gioca solo per l'avvocato del diavolo qui: ovviamente dovrai salvarlo in seguito! –
Speriamo che quanto sopra possa aiutare. –
come ruotare questo testo e quindi aggiungere all'immagine? –
Specificamente per gif di avere un risultato gif, si dovrebbe scrivere su ogni frame come la seguente:
string originalImgPath = @"C:\test.gif";
Image IMG = Image.FromFile(originalImgPath);
FrameDimension dimension = new FrameDimension(IMG.FrameDimensionsList[0]);
int frameCount = IMG.GetFrameCount(dimension);
int Length = frameCount;
GifBitmapEncoder gEnc = new GifBitmapEncoder();
for (int i = 0; i < Length; i++)
{
// Get each frame
IMG.SelectActiveFrame(dimension, i);
var aFrame = new Bitmap(IMG);
// write one the selected frame
Graphics graphics = Graphics.FromImage(aFrame);
graphics.DrawString("Hello", new Font("Arial", 24, System.Drawing.FontStyle.Bold), System.Drawing.Brushes.Black, 50, 50);
var bmp = aFrame.GetHbitmap();
var src = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bmp,
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
// merge frames
gEnc.Frames.Add(BitmapFrame.Create(src));
}
string saveImgFile = @"C:\modified_test.gif"
using (FileStream fs2 = new FileStream(saveImgFile, FileMode.Create))
{
gEnc.Save(fs2);
}
Avrei dovuto dire che ottenere i frame GIF da this post.
https://stackoverflow.com/a/48395131/485008 –
- 1. Aggiunta immagine a JFrame
- 2. Aggiunta di testo a un TextBlock legato
- 3. Aggiunta di testo a una trama grid.table
- 4. C#: aggiunta * del contenuto * di un file di testo in un altro file di testo
- 5. Creazione e aggiunta di testo a file txt in VB.NET
- 6. Win32 - Aggiunta di testo a un controllo di modifica
- 7. Aggiunta di testo a un'icona di notifica
- 8. Aggiunta di testo a ImageView in Android
- 9. Aggiunta di file a file zip esistente
- 10. Testo a sinistra e immagine a destra
- 11. Aggiunta di testo a un JTextPane senza averlo modificato dall'utente?
- 12. Aggiunta di testo su un'immagine su Xcode
- 13. Aggiunta immagine alla barra di navigazione
- 14. Testo su immagine, continua a ricevere l'errore "nessuna immagine definita"
- 15. Aggiunta di file di risorse a xcode
- 16. Aggiunta di un file JavaScript
- 17. Testo sublime 2 Aggiunta di 1 colonna a un'altra
- 18. Come aggiungere testo a un file di testo in C++?
- 19. Salva bitmap Immagine a file
- 20. Aggiunta di un testo a un oggetto JTextArea dopo l'uso di un filtro documenti
- 21. Aggiunta di file a source_group in CMake
- 22. Aggiunta di elementi a un JComboBox
- 23. Aggiunta di file non sovvertiti a subversion
- 24. Aggiunta di file Jar a IntellijIdea classpath
- 25. Aggiunta di un UIDatePicker come inputView a un campo di testo in iOS 8
- 26. Aggiunta del tipo di file a un file in Java utilizzando JFileChooser
- 27. Aggiunta di un'etichetta a una casella di testo (di programmazione)
- 28. Aggiunta di zeri iniziali a un nome file utilizzando PowerShell
- 29. Aggiunta di dati a un file Excel utilizzando jxl
- 30. Aggiunta ricorsiva di file a un repository Subversion
Guardando dentro. Il problema è che quando apri il file, è bloccato, quindi non puoi salvare sullo stesso file. Tornerai da te ... –