Ukládání obrázků do schránky do souboru v C#

jednou z motivací pro přesun mého blogu na Markdown bylo přestat spoléhat na Windows Live Writer, který již není podporován a má řadu chyb. Ale jedna věc, pro kterou to bylo výhodné, bylo vkládání obrázků do příspěvků. Mohl bych použít nástroj pro oříznutí systému Windows a vložit obrázek přímo do příspěvku. V Markdown, musím Uložit obrázek do souboru, a generovat nějaké značky odkazovat na tento soubor.

pro malé automatizované úkoly, jako je tento, můj nástroj goto je úžasný LINQPad. Mám tam stovky skriptů pro různé užitečné věci.

generování názvu souboru

nejprve musí můj skript zjistit, kam uložit obrázek do schránky. Záleží na tom, na jakém počítači běžím, protože můj repozitář GitHub je klonován na různé cesty. Zde je rychlý a špinavý trik LINQ pro výběr správné složky podle toho, na jakém počítači jsem:

var path = new { @"C:\Users\markh\code\web\markblog\wwwroot\posts18",@"C:\code\soundcode\MarkBlog\wwwroot\posts18" }.First(p => Directory.Exists(p));

dále musím vygenerovat název souboru. Používám „slug“ příspěvku jako předponu, plus zvyšující se číslo. Opět používám rychlý kousek LINQ k nalezení první přípony, která nebyla použita.

var prefix = "css-social-media-icon-list";var fileName = Enumerable.Range(1,100) .Select(n => Path.Combine(path,$"{prefix}-{n}.png")) .First(p => !File.Exists(p));

ukládání obrázků ze schránky

nyní víme, kam chceme obrázek uložit, můžeme použít třídu System.Windows.Forms.Clipboard pro přístup k obrázku a uložit jej do souboru PNG. Nenechte se odradit „Windows Forms“ v názvu-tato třída je nejjednodušší způsob přístupu do schránky a lze ji použít z konzoly nebo aplikace WPF, pokud chcete.

také aktualizuji obsah schránky s Markdown, který chci vložit do svého blogového příspěvku. Takže teď vše, co musím udělat po použití nástroje Windows clip pro pořízení snímku obrazovky, je spustit tento skript a poté vložit Markdown do textového editoru.

if(Clipboard.ContainsImage()){ Clipboard.GetImage().Save(fileName, ImageFormat.Png); Clipboard.SetText($"!(/posts/2018/{Path.GetFileName(fileName)})");}

vezmeme to dále?

takže mám vkládání obrázku do mých příspěvků markdown téměř stejně snadné jako u Windows Live Writer, ale dalším krokem by bylo začlenit podobný proces do kódu Visual Studio, který používám jako editor. Myslím, že by to mohlo být přeměněno na rozšíření kódu Visual Studio, ale mám podezření, že to znamená přepis v uzlu.js a učení, jak fungují rozšíření VS kódu. Pokud se mi to podaří, budu psát o tom, jak jsem to udělal.

ale doufejme, že je to užitečné pro každého, kdo potřebuje přístup do schránky v C#, a také vám poskytne několik nápadů, jak lze skripty LINQPad použít k automatizaci ručních úkolů.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.