Diskuze: Práce s různými formáty souborů

C# .NET .NET (C# a Visual Basic) Práce s různými formáty souborů American English version English version

Avatar
matesax
Redaktor
Avatar
matesax:

Dobrý den,
hodlám zpracovávat různé souborové formáty, a moc se mi nechce pouštět se do výpisu všech typů. Tedy prvně bych si chtěl být jist, že není lehčí řešení. Láká mne využít vyjímek. Děkuji za rozumné rady...

(Například nějak detekovat obecný typ - třeba obrázek - a již se nestarat o přesný formát - jen jej nějak detekovat a dále s ním pracovat...)

 
Odpovědět 2.10.2012 14:47
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

A co přesně chceš dělat? Nějak jsem nepochopil, na co se vlastně ptáš :)

Nahoru Odpovědět 2.10.2012 15:03
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

No chtěl bych obrázky zobrazovat v pictureboxu, texty v textboxu, atd... + nejrůznější manipulace. No a nemohu si jen tak hrát s typy... Tedy nemohu vše ukládat do jednoho formátu. Takže zrovna u obrázků (nesouborových) bych potřeboval zjistit jejich konkrétný typ... No a pak ta práce se soubory... Tou manipulací myslím základní úpravu obrázků - uvidím, jak moc budu schopen udělat jejich editaci. Textové soubory bych chtěl slučovat + možnost regex. Atp...

 
Nahoru Odpovědět 2.10.2012 15:16
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

OK - obrázky v programu převádím do MemoryStreamu a ten ukládám do sólo složky (Iamges) do XML. Texty z programu buď do rtf/txt - jiný formát se snad ani kopírovat nedá (ukládat do schránky). A soubory (včetně ostatních textových typů) řeším tedy podle dlouhého seznamu typů...

 
Nahoru Odpovědět 3.10.2012 12:41
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Pořád nevím, co chceš udělat. Uložil bych klidně vše do jedné složky a podle přípony rozpoznával, co je to za soubor. Podle toho bych ho poté načetl.

Nahoru Odpovědět 3.10.2012 12:49
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Shromaždiště dat ze schránky - s velkým ulehčením práce - možnost přímé úpravy, slučování,... U textů regex - pro neprogramátory... No a první věc - přenesení nároků na pevný disk - uložení... A právě u obrázků bych rád bezztrátovost - napadlo mne ukládat do png, ale tím jsem si nebyl jistý, ten MemoryStream jistý je... A k souborům si ukládám jen adresy a ty pak testuji - popř. vymaži. Tedy stojí mne to jen jeden texťák na soubory, a obrázky a texty tak náročné nejsou... A při vkládání bych chtěl, aby vyjel dialog s různými možnostmi... A ještě bude mini topmost panel se základními funkcemi - právě na slučování, přenášení,...

Editováno 3.10.2012 16:44
 
Nahoru Odpovědět 3.10.2012 16:42
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Netuším, z jaké schránky chce matesax stahovat soubory. Pokud z e-mailové, tak místo přípony je lepší se orientovat podle MIME. Snadno se tím odfiltruje malware.

Nahoru Odpovědět 4.10.2012 8:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Normální - Ctrl plus V, Ctrl plus C...

 
Nahoru Odpovědět 4.10.2012 13:09
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Tam máš přeci informaci o tom, co za typ ve schránce je. Normálně bych to uložil s příponou a podle přípony znovu načetl.

Nahoru Odpovědět 4.10.2012 13:21
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Pokud vím, přípona souboru nic neříká o tom, jakého typu je ten soubor. Můžeme to pouze odhadovat.

Nahoru Odpovědět  +1 4.10.2012 13:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Windows jsou navrženy tak, aby to tak fungovalo a ve většině případů se na to můžeme spolehnout.

Nahoru Odpovědět 4.10.2012 13:56
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Ano - již jsen na to přišel - jen u souborů nevím jak na to.

 
Nahoru Odpovědět 4.10.2012 15:47
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Ano. Zbytek je malware :)

Nahoru Odpovědět 4.10.2012 15:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Tak jsem narazil na další problém - alfakanál - tedy alespoň to na něj typuji - jednoduše - průhledné obrázky se uloží s černým pozadím..

 
Nahoru Odpovědět 4.10.2012 18:32
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

A jak je ukládáš?
Já používám tohle k ukládání miniatur a funguje to perfektně:

avatar.GetThumbnailImage(50, 50, null, IntPtr.Zero).Save(id + "_avatar.png", System.Drawing.Imaging.ImageFormat.Png);
Nahoru Odpovědět 4.10.2012 18:37
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:
public void AddItem(Image picture)
{
    picture.Save(dataDirectory + @"\Picture" + (Directory.GetFiles(dataDirectory, "*" + maninManager.GetFileExtension(picture.RawFormat)).Length + 1) + maninManager.GetFileExtension(picture.RawFormat), picture.RawFormat);

    ActualizeListOfElements();
}
 
Nahoru Odpovědět 4.10.2012 18:45
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Zkus to ukládat jako PNG. Ten umí průhlednost. U ostatních si definuješ výchozí barvu.

Nahoru Odpovědět 4.10.2012 18:59
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

Přečti si příspěvky nahoře - nemohu předdefinovat formát. Co kopíruji PNG je...

 
Nahoru Odpovědět 4.10.2012 19:02
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

To je ale jedno v jakém formátu je. Můžeš ho překonvertovat. Jinak si nadefinuj barvu pozadí. Je tam metoda Clear. Něco jako:

using(Graphics g = Graphics.FromImage(b)) {
        g.Clear(Color.White);
        g.DrawImageUnscaled(myImage, 0, 0);
    }

Nebo taky

Bitmap.SetTransparencyKey, Bitmap.MakeTransparent
Nahoru Odpovědět 4.10.2012 19:18
Čím více času dostaneš, tím méně ho máš.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.