Salvarea imaginilor Clipboard în fișier în C#

una dintre motivațiile pentru mutarea blogului meu la Markdown a fost să nu mă mai bazez pe Windows Live Writer, care nu mai este acceptat și are o serie de bug-uri. Dar un lucru a fost convenabil pentru a lipi imagini în postări. Aș putea folosi doar instrumentul de tăiere Windows și lipiți imaginea direct într-o postare. În Markdown, am nevoie pentru a salva imaginea într-un fișier, și pentru a genera unele markup pentru a se referi la acel fișier.

pentru sarcini automate mici, cum ar fi acest lucru, Instrumentul meu goto este uimitor LINQPad. Am sute de scripturi acolo pentru a face tot felul de lucruri utile.

generarea unui nume de fișier

în primul rând, script-ul meu trebuie să lucreze în cazul în care pentru a salva imaginea de pe clipboard la. Acest lucru depinde de ce computer rulez pe măsură ce depozitul meu GitHub este clonat pe căi diferite. Iată un truc LINQ rapid și murdar pentru a alege folderul corect, indiferent de computerul pe care sunt:

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

apoi, trebuie să generez un nume de fișier. Folosesc” slugul ” postării ca prefix, plus un număr incrementant. Din nou, folosesc un pic rapid de LINQ pentru a găsi primul sufix care nu a fost folosit.

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));

Salvarea imaginilor din clipboard

acum știm unde vrem să salvăm imaginea, putem folosi clasa System.Windows.Forms.Clipboard pentru a accesa imaginea și a o salva într-un fișier PNG. Nu vă lăsați lăsați de „Windows Forms” în nume – această clasă este cea mai ușoară modalitate de a accesa clipboard-ul și poate fi utilizată dintr-o consolă sau o aplicație WPF, dacă doriți.

de asemenea, actualizez conținutul clipboard-ului cu marcajul pe care vreau să-l lipesc în postarea mea de pe blog. Deci, acum tot ce trebuie să fac după utilizarea instrumentului clip Windows pentru a face o captură de ecran este să rulez acest script și apoi să lipesc marcajul în editorul meu de text.

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

să mergem mai departe?

așa că am lipit o imagine în postările mele markdown aproape la fel de ușor cum a fost cu Windows Live Writer, dar următorul pas ar fi să încorporez un proces similar în codul Visual Studio pe care îl folosesc ca editor. Cred că acest lucru ar putea fi transformat într-o extensie de cod Visual Studio, dar bănuiesc că înseamnă o rescriere în nod.js și învățarea modului în care funcționează extensiile de cod VS. Dacă reușesc, voi posta despre cum am făcut-o.

dar sperăm că acest lucru este util pentru oricine are nevoie de acces la clipboard în C# și vă oferă, de asemenea, câteva idei despre modul în care scripturile LINQPad pot fi utilizate pentru automatizarea sarcinilor manuale.

Lasă un răspuns

Adresa ta de email nu va fi publicată.