• Welcome to Forum graficzne Burning-Brushes.pl. Please log in or sign up.
 

Adddate

Zaczęty przez Abik, Listopad 17, 2012, 18:19:04

Poprzedni wątek - Następny wątek
Taki mikro program dodający datę do wszystkich zdjęć w wybranym folderze. Ojciec potrzebował, a nie znam żadnego gotowca o tej funkcji, więc sobie zrobiłem.

[img]http://img.burning-brushes.pl/images/beztytkqk.png[/img]

Kod głównej klasy (tutaj kod jest już dużo lepszy niż w KaliGFX, więc nie zniechęcam do czytania czy pożyczania : D)
[code]
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace Adddate
{
public partial class MainForm : Form
{
string folder = String.Empty;
List<FileInfo> doPrzerobki = new List<FileInfo>();

Color kolor = Color.Gray;
int rog = 0;

public MainForm()
{
InitializeComponent();
}

void Button1Click(object sender, EventArgs e) //folderButton
{
folderBrowserDialog1.ShowDialog();
folder = folderBrowserDialog1.SelectedPath;
if(folder != String.Empty){
folderLabel.Text = "Wybrany folder: " + folder;
addDateButton.Enabled = true;

doPrzerobki = new List<FileInfo>();
DirectoryInfo dir = new DirectoryInfo(folder);
long bajty = 0;
int i = 0;
foreach(FileInfo f in dir.GetFiles()){
if((f.Extension == ".jpg") || (f.Extension == ".png") || (f.Extension == ".jpeg")
  || (f.Extension == ".JPG") || (f.Extension == ".PNG") || (f.Extension == ".JPEG")){
doPrzerobki.Add(f);
bajty += f.Length;
i++;
}
}
ileObrazkowLabel.Text = "Liczba obrazków do przetworzenia: " + i.ToString();
ileMbLabel.Text = "Liczba MegaBajtów do przetworzenia: "
+ (bajty/(double)1000000).ToString("#.##");
}
}

void Button2Click(object sender, EventArgs e) //addDateButton
{
if(kolor.IsEmpty)
kolor = Color.Gray;
if((rog > 3) || (rog < 0))
rog = 0;

folderButton.Enabled = false;
addDateButton.Enabled = false;
optionsButton.Enabled = false;
progressBar1.Value = 0;
progressBar1.Minimum = 0;
progressBar1.Maximum = doPrzerobki.Count;

Bitmap bmap = null;
Graphics gfx = null;
Font font = null;
SolidBrush brush = new SolidBrush(kolor);
string tmp = String.Empty;

Stopwatch swatch = Stopwatch.StartNew();
for(int i = 0; i<doPrzerobki.Count; i++){
bmap = (Bitmap) Bitmap.FromFile(doPrzerobki[i].FullName);
gfx = Graphics.FromImage(bmap);
font = new Font("Arial", bmap.Width/50, FontStyle.Regular, GraphicsUnit.Pixel);
tmp = doPrzerobki[i].Name.Substring(0, doPrzerobki[i].Name.IndexOf("."));

if(rog==0) //lewy gorny
gfx.DrawString(doPrzerobki[i].LastWriteTime.ToString(), font, brush, 20, 20);
if(rog==1) //prawy gorny
gfx.DrawString(doPrzerobki[i].LastWriteTime.ToString(),
              font, brush, bmap.Width*(float)0.8, 20);
if(rog==2) //lewy dolny
gfx.DrawString(doPrzerobki[i].LastWriteTime.ToString(),
              font, brush, 20, bmap.Height*(float)0.95);
if(rog==3) //prawy dolny
gfx.DrawString(doPrzerobki[i].LastWriteTime.ToString(),
              font, brush, bmap.Width*(float)0.8, bmap.Height*(float)0.95);

bmap.Save(doPrzerobki[i].DirectoryName + "\\" +   
        tmp+"_2" + doPrzerobki[i].Extension);
gfx.Dispose(); bmap.Dispose();

progressBar1.Value = i+1;
}
swatch.Stop();

folderButton.Enabled = true;
addDateButton.Enabled = true;
optionsButton.Enabled = true;
czasLabel.Text = "Czas przetwarzania: " + (swatch.ElapsedMilliseconds/(float)1000).ToString("0.##") + "s";
}

void Button3Click(object sender, EventArgs e) //optionsButton
{
Opcje opcje = new Opcje(kolor, rog);
if(opcje.ShowDialog() == DialogResult.OK){
this.kolor = opcje.kolor;
this.rog = opcje.rog;
}
}
}
}
[/code]

Kod klasy z opcjami
[code]
using System;
using System.Drawing;
using System.Windows.Forms;

namespace Adddate
{
public partial class Opcje : Form
{
public Color kolor{
get;
private set;
}

public int rog{
get;
private set;
}

public Opcje(Color kolor, int rog)
{
InitializeComponent();
this.kolor = kolor;
this.rog = rog;
whereToComboBox.SelectedIndex = rog;
colorLabel.BackColor = kolor;
}

void Button2Click(object sender, EventArgs e) //okButton
{
this.DialogResult = DialogResult.OK;
this.Close();
}

void Button1Click(object sender, EventArgs e) //colorButton
{
colorDialog1.ShowDialog();
kolor = colorDialog1.Color;
colorLabel.BackColor = kolor;
}

void ComboBox1SelectedIndexChanged(object sender, EventArgs e) //whereToComboBox
{
rog = whereToComboBox.SelectedIndex;
}

void ColorLabelClick(object sender, EventArgs e)
{
colorDialog1.ShowDialog();
kolor = colorDialog1.Color;
colorLabel.BackColor = kolor;
}
}
}
[/code]

jakby ktoś chciał wszystkie pliki projektu to niech da znać
EXE -> http://www.sendspace.pl/file/e42d7203b5041698de44915/adddate [pewnie szybko wygaśnie, więc jakby ktoś coś to też dać znać]

mam jeszcze taki program do szyfrowania, o wiele większy, ale on jest w ciągłym rozwoju, więc dopiero jak skończę semestr to wrzucę : d
[right][url=http://burning-brushes.pl/programowanie/kaligfx/]KaliGFX[/url]
Tutoriale SA: [url=http://burning-brushes.pl/tutoriale-photoshop/jak-zrobic-planete-w-photoshopie/]Planety[/url] | [url=http://burning-brushes.pl/tutoriale-photoshop/jak-zrobic-nebule/]Nebule[/url] | [url=http://burning-brushes.pl/tutoriale-photoshop/inne-elementy-space-artow/]Inne elementy[/url] | [url=http://burning-brushes.pl/tutoriale-photoshop/jak-zrobic-sa-na-przykladzie-%27the-ice-in-her-eyes%27/]Składanie całości[/url]
Tutoriale POV-Ray: [url=http://burning-brushes.pl/pozostale-tutoriale/podstawy-pov-raya/]Podstawy[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/jak-zrobic-balwanka-i-bombki-w-pov-rayu/]Bałwan i bombki[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/bardziej-zaawansowane-podstawy-pov-raya/]Podstawy część 2[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/jak-zrobic-napisy-3d-w-pov-rayu/]Napisy 3D[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/animacje-w-pov-rayu/msg114710/]Animacje[/url]
Tutoriale Apophysis: [url=http://burning-brushes.pl/pozostale-tutoriale/jak-szybko-robic-fraktale/]Fraktale[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/troche-o-pisaniu-skryptow-w-apophysis/new/#new]Skrypty[/url]
Materiały do SA: [url=http://burning-brushes.pl/stocki-201/15-zdjec-chmur/]Chmury[/url] | [url=http://burning-brushes.pl/stocki-201/40-zdjec-chmur/]Chmury 2[/url] | [url=http://burning-brushes.pl/stocki-201/asteroidy/]Asteroidy[/url]
Tekstury: [url=http://burning-brushes.pl/stocki-201/tekstury-kamieni-skal-betonu/]Kamienie[/url] | [url=http://burning-brushes.pl/stocki-201/tekstury-drzewa/]Drewno, kora[/url] | [url=http://burning-brushes.pl/stocki-201/tekstury-z-zardzewialym-metalem/]Metal, rdza[/url]
Inne materiały: [url=http://burning-brushes.pl/brushe-202/abik%27s-splatter-brushes/]Splatter brushes[/url] | [url=http://burning-brushes.pl/brushe-202/abik%27s-vector-set/]Vector brushes[/url][/right]

i tak oto żaba się nudzi :)


ps. w photoshopie masz coś takiego jak "akcje" :D
[center]bo chciałem
[hr]

[img]http://img.burning-brushes.pl/images/dectnt.png[/img]
[/center]

[hr]
A cała twórczość widnieje tu: [url=http://www.facebook.com/whiteblackrose][color=#ffffcc][b]WhiteBlackRose[/b][/color][/url]

[url=http://decremi.pl/]decremi.pl/[/url] portfolio

ale da się zrobić akcję tak żeby pobrało datę utworzenia danego obrazka i napisało mi ją na obrazku? nie jestem przekonany, a w c# napisać to, to była godzinka prawie dokładnie
nigdy nie korzystałem z akcji, to się nie nadaje do niczego, chyba że często robi się coś prostego, a ja takich rzeczy nigdy nie robię xddd
[right][url=http://burning-brushes.pl/programowanie/kaligfx/]KaliGFX[/url]
Tutoriale SA: [url=http://burning-brushes.pl/tutoriale-photoshop/jak-zrobic-planete-w-photoshopie/]Planety[/url] | [url=http://burning-brushes.pl/tutoriale-photoshop/jak-zrobic-nebule/]Nebule[/url] | [url=http://burning-brushes.pl/tutoriale-photoshop/inne-elementy-space-artow/]Inne elementy[/url] | [url=http://burning-brushes.pl/tutoriale-photoshop/jak-zrobic-sa-na-przykladzie-%27the-ice-in-her-eyes%27/]Składanie całości[/url]
Tutoriale POV-Ray: [url=http://burning-brushes.pl/pozostale-tutoriale/podstawy-pov-raya/]Podstawy[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/jak-zrobic-balwanka-i-bombki-w-pov-rayu/]Bałwan i bombki[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/bardziej-zaawansowane-podstawy-pov-raya/]Podstawy część 2[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/jak-zrobic-napisy-3d-w-pov-rayu/]Napisy 3D[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/animacje-w-pov-rayu/msg114710/]Animacje[/url]
Tutoriale Apophysis: [url=http://burning-brushes.pl/pozostale-tutoriale/jak-szybko-robic-fraktale/]Fraktale[/url] | [url=http://burning-brushes.pl/pozostale-tutoriale/troche-o-pisaniu-skryptow-w-apophysis/new/#new]Skrypty[/url]
Materiały do SA: [url=http://burning-brushes.pl/stocki-201/15-zdjec-chmur/]Chmury[/url] | [url=http://burning-brushes.pl/stocki-201/40-zdjec-chmur/]Chmury 2[/url] | [url=http://burning-brushes.pl/stocki-201/asteroidy/]Asteroidy[/url]
Tekstury: [url=http://burning-brushes.pl/stocki-201/tekstury-kamieni-skal-betonu/]Kamienie[/url] | [url=http://burning-brushes.pl/stocki-201/tekstury-drzewa/]Drewno, kora[/url] | [url=http://burning-brushes.pl/stocki-201/tekstury-z-zardzewialym-metalem/]Metal, rdza[/url]
Inne materiały: [url=http://burning-brushes.pl/brushe-202/abik%27s-splatter-brushes/]Splatter brushes[/url] | [url=http://burning-brushes.pl/brushe-202/abik%27s-vector-set/]Vector brushes[/url][/right]