Dlouho jsem pouzival cizi aplikaci ImageResizer, ktera ale umela zmensovat pouze soubory jpeg. A protoze uz me porad nebavilo prevadet obrazky do jpg a pripadne pak zase zpet,
udelal jsem si malou vlastni aplikaci, ktera prevadi typy souboru v prve rade jpg, pak ale umi prevadet i libovolne dalsi typy – zkousel jsem to na png a gif(a to ani ne ted jako spise pri mem SunamoBlogConverter’u), ve kterem pouzivam stejny algoritmus. Je to dalsi aplikace, protoze podobnou uz mam z drivejska, ta je specialne na zmensovani fotek a je to app s GUI:
Nova app je app bez GUI, jedine co vypisuje je za se soubor podarilo prevest nebo zda existoval(zde konvertuji jediny soubor ale jejich pocet najednou neni omezen):
Takze zpet k ImageResizeru, ten funguje tak ze proste na neho pretahnu soubory a on podle nazvu exe tyto soubory zmensi. Umi kdyz mu zadate pouze sirku, si vysku vypocitat automaticky. Toto vsechno umi i muj program. A aby to tu nebylo tak strohe, mohu vam tu dat metodu Main() aspon:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
static void Main(string[] args) { //args = new string[] { @"F:\Mona\Visual Studio 2010\Projects\SunamoImageResizer\SunamoImageResizer\bin\Release\theme_ntp_background-o.png" }; string coords = null; int width = 0; int height = 0; bool calculateHeight = false; string size = Process.GetCurrentProcess().ProcessName.Replace(".exe", ""); if (!size.Contains("-")) { //width = 800; //calculateHeight = true; string error = "Musite zadat alespon sirku - pro sirku 16px program pojmenujte ImageResizer16. Pote program zmensi oba obrazky ve stejnem polomeru. Pokud chcete zadat jinou sirku a jinou vysku(napriklad vyska: 768px, sirka 1366px), pojmenujte program ImageResizer-1366x768"; Error(error); return; } else { string[] first = Split(size, "-"); coords = first[first.Length - 1]; if (coords.Contains("x")) { string[] second = Split(coords, "x"); if (second.Length != 2) { Error("Nemuzete zadat vice nez 2 rozmery"); return; } if (int.TryParse(second[0], out width)) { height = width; } else { Error("Nebylo zadano platne cislo pro sirku"); return; } if (int.TryParse(second[1], out height)) { } else { Error("Nebylo zadano platne cislo pro vysku"); return; } } else { if (int.TryParse(coords, out width)) { calculateHeight = true; //height = (width / 100) * 75; coords = width + "x" + height; } else { Error("Nebylo zadano platne cislo pro velikost"); return; } } } coords = "-" + coords; for (int i = 0; i < args.Length; i++) { if (calculateHeight) { Image img = Image.FromFile(args[i]); //-1366x768 = 800x600 float f = (float)img.Width / (float)img.Height; height = (int)(width / f); coords = width + "x" + height; } string to = InsertBetweenFileNameAndExtension(args[i], "-" + coords); string fn = Path.GetFileName(to); if (ImageResize(args[i], to, width, height) == "") { Console.WriteLine("Soubor {0} jiz existoval", fn); } else { Console.WriteLine("Uspesne prevedeno do {0}", fn); } } Console.ReadLine(); } |