Czy warto zrobić PhotoMake(PhotoYebator) 2.0?

0

Witam. Po dokładnej analizie programu i komentarzy osób, które zechciały przetestować wcześniejsze wersje doszedłem do wniosku, że... obniżę nieco próg wymagań, które sobie stawiałem.
Chciałem na początku napisać program, który konstrukcją i złożonością będzie mógł rywalizować z najlepszymi. Okazało się to dość trudne - zresztą to nic odkrywczego. Idąc, więc za radą innych chciałbym stworzyć program mniejszy. Praktycznie całkiem nieduży, lecz wycisnę z wcześniejszych wersji to co najlepsze i jeszcze dodam nowe pomysły. A co najlepsze było? Według mnie filtry. Byłą ich duża ilość jeśli nie ogromna. Dziś wiem, że jestem w stanie poszerzyć owe możliwość o jakieś 1.5 bądź 2 RAZY.

Jakie będą, więc różnice i co będzie poprawione?
Praktycznie całkiem chciałbym zmniejszyć próg wymagań co do programu. Byłby to program mały, przyjemny, prosty w obsłudze. Ograniczałby się do wyboru kilka pozycji w menu, ewentualnym rysowaniu za pomocą pary narzędzi jak i opcji czyli np trybu malowania.

Czego raczej nie będzie:

  • Zrezygnowałbym z warstw. Kanał alpha, więc by nie istniał. Nakładanie na siebie obrazków byłoby jednak tylko, że w postaci filtru.
  • Brak jakichś szczególnych pr0 narzędzi.
  • Brak antyaliasingu. Program będzie skupiony przede wszystkim na filtrach. Nic ponad to, więc rysowanie figur itd nie będzie jego głównym celem.
  • Brak narzędzia ścieżki i innych tego podobnych narzędzi.
  • Raz wstawiony obiekt (tekst, koło etc) nie będzie możliwe do przesunięcia w późniejszych etapach.
  • Nie będzie linijek, prowadnic i innych podobnych narzędzi.
  • Gradienty proste, lecz nie złożone.
  • Brak narzędzi takich jak zmiana perspektywy.

Co raczej będzie:

  • Będzie zoom
  • Zaznaczanie za pomocą myszy i suwaków. Do wyboru. (to samo z rysowaniem figur)
  • Historia będzie w postaci np: "Rozjaśnienie jakieś tam: " i obok obrazek
  • Obsługa kilku plików jednocześnie. Czyli nie musimy wyłączać jednego zdjęcia aby modyfikować inne.
  • Szybsze działanie narzędzi do rysowania.
  • Narzędzia do rysowania będą szybsze mimo bardziej rozbudowanych funkcji. Np rozmyte krawędzie pędzla i tryb jego rysowania znane z PhotoShopa.
  • możliwość wypełnienia teksturą.
  • Szybkie wczytywanie zdjęć. Wcześniej były z tym problemy teraz będzie normalnie jak w każdym innym znanym programie :)
  • modyfikacje poszczególnych barw. Działanie podobne jak opcje znane z PhotoShopa - cienie, półcienie i światła. Tu będzie to nieco bardziej rozbudowane.
  • łatwiejsze menu do obsługi.
  • Brak okienka "akceptacja zmian"
  • Dodawanie zaznaczeń, odejmowanie etc.

Krótko mówiąc chcę zmienić dość mocno całą koncepcję z : "kopiowania PhotoShopa" na stworzenie małego programu z masą gotowych filtrów.
(aktualnie 30 filtrów rozjaśnienia i tak z każdym filtrem)
Brak tych narzędzi, które często były powodem błędów. Dzięki temu program będzie mógł bardziej skupić uwagę na tym w czym leży jego siła.

Pytanie jednak: Czy warto tak zrobić? Dałem listę czego nie będzie i co będzie by być obiektywnym. Jeśli macie jakieś pytania to pytajcie i odpowiem. Dodaję ankietę :)

1

Życzę Ci jak najlepiej... Masz okazję się poprawić po wrażeniu wywołanym wyciekiem kodu z poprzedniego PhotoCośtam :)

Jestem ciekawy w jakim języku planujesz pisać (wybór sprowadza się dla Ciebie chyba dla C++ / C# - ze swojej strony polecam, w ramach rozwijania się, to drugie).

Btw myślisz że tym razem poradzisz sobie z Inżynierią Oprogramowania albo Projektowaniem czyli po prostu Burdelem W Kodzie lepiej niż poprzednio? Oby... [tu był :) ale go wyciąłem]

Edit: świat się wali, mam kilka razy więcej emoticonów / linijkę niż polaczek17. Idę się utopić.

Edit2: zrobiłem coś z tym, już mi lepiej.

0

Pewnie :)
Kod już teraz wygląda o wiele lepiej niż wtedy. I to w tej części która jest najważniejsza. Co do samego interfejsu etc to tak naprawdę jeszcze... NIE MAM NIC wykodzone. Z drugiej strony chętnie niedługo się tym zajmę bo muszę jakoś ładniej to rozmieścić niż ostatnio.

Co do C++ / C# (jeszcze mógłby być delphi :D) to mimo tego, że chętnie bym pisał w C# to jednak wybiorę C++. To z powodu szybkości. W C# filtry działałyby strasznie wolno.
Natomiast w C# na dzień dzisiejszy będę niedługo pisać mały projekcik bazodanowy do dat urodzenia etc. (ostatnio o mało o urodzinach koleżanki nie zapomniałem no i tak mnie naszło, że taki programik mały by się przydał).

Czy sobie poradzę z Inżynierią Oprogramowania to się okaże, ale faktem jest, że już to będzie trzecie podejście a ... do trzech razy sztuka. Wiem czego unikać już, więc może być tylko lepiej. Pytanie: Czy będzie na tyle dobrze, aby się podobało?

Edit: świat się wali, mam kilka razy więcej emoticonów / linijkę niż polaczek17. Idę się utopić.

:P :) :D <--- masz by nie było Ci smutno :P

0

polaczek, p1erdol to co mowia inni, rob swoje az wkoncu zrobisz cos co spowoduje opad szczeki bynajmniej nie z powodu jakosci kodu tylko mozliwosci, ja bym zaczal najpierw od obadania czego na rynku brakuje

0

Gdybyś wyposażył swój program w statki i liczenie pola koła to myślę, że bym przetestował nowego yebatora.

0

Jeden tester wte czy wewte - dla mnie to żadna różnica :)

Co ty bredzisz, setki użytkowników potrzebują wyliczania pola koła w programach graficznych.

0

PhotoMake

Co to, zmiana nazwy? „PhotoYebator” było znacznie bardziej nośną nazwą..

0

Zrób lepiej PhotoYebatora w wersji na Androida :) Rynek PCtów jest już nasycony i raczej ciężko będzie zmienić tę sytuację.

0

Zrezygnowałeś z tych najbardziej przydatnych opcji, szkoda.

0

Moze zaczne od tego, ze jezeli o fotoszopy, gimpy itp chodzi to jestem no0bem :P Wiec badzciw wyrozumiali jak napisze cos bezsensu ;)
Brak warstw moze byc dosc bolesny - rozumiem, ze to ma byc prosty program, ale jednak ludzie sa przyzwyczajeni do pewnych 'kanonow' po photoshopie i gimpie i mysle, ze bez naprawde waznego powodu nie warto robic tego po swojemu(chyba, ze zrobisz to tak ze bedzie to znaczaco lepsze?).

  • Raz wstawiony obiekt (tekst, koło etc) nie będzie możliwe do przesunięcia w późniejszych etapach.
  • Nie będzie linijek, prowadnic i innych podobnych narzędzi.
    Co do pierwszego z wymienionych to w sumie warstwy sie klaniaja, imho brak jednego i drugiego moze sie okazac bardzo niepraktyczny. Ok jest oprogramowanie z ktorego czesto korzystam, ktore tego nie ma - Paint :D ale co innego 'poprawiac' wykresy do sprawozdania, a co innego robic jakies sensowniejsze rzeczy.
    Prowadnice i linijki bywaja pomocne - ok, mozna sie bez nich obejsc, ale... czy naprawde trzeba je wywalac? Rozumiem, ze chcesz uproscic program, ale to nie jest jakies mega skomplikowane narzedzie ;)
0

Co to, zmiana nazwy? „PhotoYebator” było znacznie bardziej nośną nazwą..

Oficjalna nazwa to był zawsze PhotoMake :) PhotoYebator to taka nazwa tutaj, ale jednak nie bardzo bym mógł nazwać tak program, który chcę dać do użytkowania dla większego grona.

Zrób lepiej PhotoYebatora w wersji na Androida :) Rynek PCtów jest już nasycony i raczej ciężko będzie zmienić tę sytuację.

To byłoby nawet ciekawe, lecz nie mam doświadczenia na androidach. Musiałbym pouczyć się najpierw kilka miesięcy i poznać wszystko. Poza tym nowa platforma = nowe błędy.
Pomysł jednak bardzo interesujący.

Zrezygnowałeś z tych najbardziej przydatnych opcji, szkoda.

Bez obaw :) Program faktycznie może ucierpieć na tych odjętych funkcjonalnościach (przede wszystkim warstwy), ale jestem tego świadomy, a skoro tak, to z pewnością postaram się zrobić to tak aby program rekompensował te straty.

Co więcej warstwy będą ukryte jako filtry. Nie będzie, więc to działać tak jak w PhotoShopie czy GIMP-ie, ale da się zrobić to co w nich. Tylko metoda będzie inna.

Brak warstw moze byc dosc bolesny - rozumiem, ze to ma byc prosty program, ale jednak ludzie sa przyzwyczajeni do pewnych 'kanonow' po photoshopie i gimpie i mysle, ze bez naprawde waznego powodu nie warto robic tego po swojemu(chyba, ze zrobisz to tak ze bedzie to znaczaco lepsze?).

Tak jak wyżej. Popatrz jednak na to:

  • PhotoFiltre 6.5.1
  • Image Forge 3.6
  • ArtRage Starter Edition 2.6.0
  • Brush Strokes Image Editor 1.0
  • Image Analyzer 1.31
  • GIFEx 2.2 (chociaż ten program to akurat do tworzenia GIF-ów, więc nieco inna tematyka)
  • TwistedBrush Free 14.2
  • MrImage 0.11.0.0
  • ZPaint 1.4
  • PerlinTool 1.0 (program podobny do funkcji fraktali w GIMP-ie)
  • BIMP Batch Image Processor 1.62
  • Gallery 2.6.4 (to w sumie przeglądarka zdjęć, więc też nieco inna tematyka)
  • DeKnop 5.0
  • Colour Editor 2.3

To są programy, które nie posiadają czegoś takiego jak warstwy (mogę się mylić co do poniektórych, ale chyba wymieniłem dobrze)
A mimo tego braku są dość popularne i znane. Baaa niektóre to są programy do zrobienia w jakiś niecały tydzień :P
np: Colour Editor 2.3 służy tylko do... zmiany określonego koloru na zdjęciu. Poprzez podanie tolerancji. Banał a mimo to całkiem wysoko oceniony.

Natomiast siła będzie w filtrach. Dzięki temu program umożliwi:

  • duże ilości filtrów, które różnią się znacznie pomiędzy sobą
  • Kilka filtrów małpujących warstwy
  • Spore możliwości korekty zdjęcia
  • Łatwiejsza (bo wygodniejsza) metoda modyfikacji oczu, skóry etc.

Ogólnie spora liczba filtrów + narzędzia rysownicze, które będą równie fajne jak te z PhotoShopa. Sądzę, że to wystarczy do zebrania jakiegoś grona użytkowników, zadowolonych z programu :)

Co do pierwszego z wymienionych to w sumie warstwy sie klaniaja, imho brak jednego i drugiego moze sie okazac bardzo niepraktyczny.

No właśnie. Gdybym chciał zmieniać w późniejszych etapach tekst etc. to musiałbym zrobić warstwy. A to niestety odpada.
Prowadnice miałyby sens też w momencie gdy istniałyby warstwy. Linijka zaś... szczerze mówiąc nie korzystałem z niej. Jeśli jednak chodzi o dokładne wymierzanie czegoś to w programie będą znane już suwaczki.

Aha oczywiście mimo tego, że warstw nie będzie to narzędzia będą posiadały przezroczystość.

0

Ja potrzebuje lekkiego programu graficznego z warstwami i prowadnicami oraz linijkami właśnie ;p Tutaj przyciąć screen, tam zrobić mały baner, czy jakiś button do programu. Dopasować, przeskalować tło, dobre zaznaczanie, takie automagiczne również etc. etc. Usuwasz, ze swojego programu, to co jest najbardziej potrzebne. Masz dobry kierunek, ale zły zwrot zostawiając milion filtrów, które w zasadzie tylko filtrują, lub modyfikują, ale zadanym algorytmem. No chyba, że liczysz na kase i będziesz na NK sprzedawał, jako program do odpicowywania sweet foci naszych kochanych panterek XD Hmm... to może być intratny interes jak te nastolatki pokradną karty płatnicze rodziców ;p Chociaż teraz chyba mija szał nk... nie wiem nie miałem nigdy ;p

Zastanów się, czy ludziom potrzeba milion filtrów. Prawdziwy profesjonalista czy drobny studencik jak ja nie potrzebuje miliona filtrów tylko to co napisałem. W takim razie celujesz w rynek publiczny i szarego kowalskiego czy różową nastolatke ? Ok, ale w takim przypadku czy tacy prości ludzie jeśli chodzi o techniki komputerowe będą wstanie, a przede wszystkim czy będą mieli ochotę poznawac milion filtrów i ich zastosowania ? Oni pewnie nie spamiętają nazw tych filtrów.

Tworząc na taki rynek należy brać to pod uwagę. Tworząc na inne rynki - ten program jest nieprzydatny, chyba, że jako wtyczka rozszerzająca możliwości filtrowania gimpa.
W tej formie mówię nie temu programowi, aczkolwiek mogę się mylić i moze wyjść z tego coś fajnego, może wprowadzisz jakąś nową innowacje jak Apple ;p

0

Ja potrzebuje lekkiego programu graficznego z warstwami i prowadnicami oraz linijkami właśnie ;p Tutaj przyciąć screen, tam zrobić mały baner, czy jakiś button do programu.

To zupełnie inna dziedzina :) Tzn przycinanie będzie oczywiście i za pomocą myszy i za pomocą suwaczków. Co tak naprawdę da Ci możliwość dokładnego wymierzenia. Zrobienie jednak baneru itd to już inna sprawa i do tego mój program się nie nada. Tak jak pisałem odchodzę od myślenia "kopiuj PhotoShopa" i chcę stworzyć coś co dobrze potrafię, czyli program z masą filtrów gotowych do przetworzenia zdjęć na tysiące jak nie więcej sposobów.
Program jest wymierzony w zdjęcia / fotografie. Nie będzie jednak możliwości tworzenia grafiki od podstaw. No chyba, że już jakiś button jest zrobiony bądź baner to wtedy będzie można go upiększyć w moim programie.

Dopasować, przeskalować tło, dobre zaznaczanie, takie automagiczne również etc. etc. Usuwasz, ze swojego programu, to co jest najbardziej potrzebne.

Zgadza się. Jest to potrzebne ale dla grafików, którzy tworzą obrazy albo od podstaw, albo mocno korygują fotografię. Skalowanie będzie ale nie będzie przestrzennego rzutowania.

Masz dobry kierunek, ale zły zwrot zostawiając milion filtrów, które w zasadzie tylko filtrują, lub modyfikują, ale zadanym algorytmem. No chyba, że liczysz na kase i będziesz na NK sprzedawał, jako program do odpicowywania sweet foci naszych kochanych panterek XD

hah :P AŻ tak źle nie jest, ale z drugiej strony program ma być właśnie nastawiony na modyfikację gootwych obrazów. Czyli przede wszystkim zdjęć. Do tego nada się jak żaden inny program. (śmiem nawet tak twierdzić).
Co do gotowych algorytmów to masz rację i własnie pracuję nad tym, aby każda możliwa funkcja była na tyle elastyczna by to użytkownik w miarę możliwości kierował algorytmem. Na tyle na ile to możliwe oczywiście.

Hmm... to może być intratny interes jak te nastolatki pokradną karty płatnicze rodziców ;p Chociaż teraz chyba mija szał nk... nie wiem nie miałem nigdy ;p

Ale facebook jeszcze jest :D

Zastanów się, czy ludziom potrzeba milion filtrów. Prawdziwy profesjonalista czy drobny studencik jak ja nie potrzebuje miliona filtrów tylko to co napisałem. W takim razie celujesz w rynek publiczny i szarego kowalskiego czy różową nastolatke ?

Może inaczej:
Celuje w osoby, które wracają z wakacji i mają ileś tam zdjęć. Chcą sobie je wydrukować, pokazać znajomym etc. W tym momencie taki właśnie przeciętniak odpala kobyłę taką jak Photoshop i ... bawi się niczym więcej jak filtrami. Baaa te osoby zazwyczaj nie wiedzą do czego tak naprawdę warstwy służą :P Po co im w takim razie kobyłka jaką jest PhotoShop, która daje ogromne możliwości, ale osobom zaawansowanym. A przynajmniej ogarniętym w temacie. Mój program zaś celuje w te osoby mniej doświadczone, które poprawą sobie oczka, włoski, buźkę i dupkę za pomocą suwaczków. łatwe proste i przyjemne.
Użyteczne?
Zależy jak dla kogo. Grafik nie skorzysta, programista zależy w jakiej sytuacji. Nie stworzy tu banera, ale będzie mógł odpicować swoje zdjęcia i dalej podrywać laski w necie :P

Ok, ale w takim przypadku czy tacy prości ludzie jeśli chodzi o techniki komputerowe będą wstanie, a przede wszystkim czy będą mieli ochotę poznawac milion filtrów i ich zastosowania ?

Ha i to jest właśnie ten cały problem z interfejsem. Trzeba zrobić tak by osoby nowe nie przestraszyły się widoku milona menu i mikro buttonów do otworzenia 156 filtru z modyfikacja nr 123 :P mam pomysł na interfejs i sądzę, że nie wystraszą się. Będzie funkcjonalny, a przy tym niewielki. mam nadzieję, że do tego wszystkiego uda się zrobić by był ładny.

Oni pewnie nie spamiętają nazw tych filtrów.

Dlatego planuję zrobić po prostu menu o nazwie np "rozjaśnienie" a w tym menu w rozwijanej liście z 5 różnych możliwości do wyboru. Po kliknięciu odpali się formatka a na niej kilka opcji. W tym także ComboBox i dopiero w nim będzie sporo możliwości. Wybranie z ComboBox-a filtru będzie dość szybkie, wygodne a przy tym użytkownik w czasie rzeczywistym zobaczy efekty na monitorze.

W tej formie mówię nie temu programowi, aczkolwiek mogę się mylić i moze wyjść z tego coś fajnego, może wprowadzisz jakąś nową innowacje jak Apple ;p

Z pewnością ludzie będą podzieleni. Zauważ jednak w moim poprzednim poście wymieniłem kilka programów gdzie tak naprawdę ich funkcjonalności ograniczają się do paru funkcji. Dosłownie kilku a mimo to są użyteczne dla wielu ludzi.
Sądzę, więc, że graficy i ludzie którzy oczekują budowania grafiki od podstaw z pewnością powiedzą stanowcze "nie". Jednak ludzie, którzyz szukają szybkich modyfikacji i niewielkiego wkładu pracy mogą być zadowoleni.

Innowacje z pewnością będą w postaci filtrów. Takich filtrów nie ma nigdzie indziej i staram się - tak jak napisałeś - by żadna z funkcji nie ograniczała użytkownika algorytmem. Oczywiście w jakimś stopni tak być musi, ale próbuję to ograniczyć do minimum.

0

Problem w tym, że te filtry nie były zbyt wiele warte. Sztucznie rozdmuchane opcje - w Photoshopie jeden filtr z odpowiednimi ustawieniami zrobi więcej, niż twoje 10. Jeżeli normalnie zaprojektujesz gui, to z tych twoich wszystkich filtrów zostanie może 3..4.

Jak tak dalej pojdzie, to zrobisz 10 filtrów na wyostrzanie: wyostrzanie 5%, wyostrzanie 10% itd, zamiast dać suwak ustawień. Analogicznie z resztą filtrów. I wydaje mi sie ze w photoyebatorze spcejalnie to wszystko rozdrobniles zeby wygladalo ze filtrów jest wiecej. Ja tam widze góra kilka filtrów.
Jesli teraz to znow powtorzysz, to i tak każdy to wyśmieje i nikt nie zechce używać. Raczej filtry nie będą mocną stroną tego programu.

Poza tym, postanowiłeś usunąć z programu opcje, za które nie wiesz jak się zabrać. Ok - może i logiczne, ale to są akurat najbardziej przydatne opcje.

0

Problem w tym, że te filtry nie były zbyt wiele warte. Sztucznie rozdmuchane opcje - w Photoshopie jeden filtr z odpowiednimi ustawieniami zrobi więcej, niż twoje 10. Jeżeli normalnie zaprojektujesz gui, to z tych twoich wszystkich filtrów zostanie może 3..4.

Nie, nie, nie. Tak było kiedyś, teraz te filtry są naprawdę warte uwagi. Ich liczba rośnie a funkcjonalności każdej funkcji z osobna się zwiększają. Toteż właśnie zaczyna być już normalnie.

Jak tak dalej pojdzie, to zrobisz 10 filtrów na wyostrzanie: wyostrzanie 5%, wyostrzanie 10% itd, zamiast dać suwak ustawień. Analogicznie z resztą filtrów. I wydaje mi sie ze w photoyebatorze spcejalnie to wszystko rozdrobniles zeby wygladalo ze filtrów jest wiecej. Jesli teraz to znow powtorzysz, to i tak każdy to wyśmieje i nikt nie zechce używać.

No błagam... Przecież oczywiste jest, że algorytmy każdego z filtrów są inne. Co więcej zmieniłem algorytmy tych filtrów, które były zbyt podobne do siebie. Każdy algorytm jest inny i dzięki temu nadaje się do innych rzeczy. Np jeden lepszy jest do cieni inny do świateł. Dodatkowo istnieje możliwość zdefiniowania na jakich barwach ma działać i wedle wskaźnika określającego zgodność barw ustalana jest siła filtru.
Duuuuuuuuuuuuużo do przodu poszło wszystko w porównaniu z poprzednikiem.

Poza tym, postanowiłeś usunąć z programu opcje, za które nie wiesz jak się zabrać. Ok - może i logiczne, ale to są akurat najbardziej przydatne opcje.

I znów się mylisz. Przecież owe funkcje znalazły się u poprzednika. Były po prostu za wolne. Brzydko to wyglądało i pojawiały się błędy. Rezygnuje z tych funkcji WŁAŚNIE dlatego, że wiem jak to zrobić i jakie konsekwencje by to miało.

0

Były po prostu za wolne. Brzydko to wyglądało i pojawiały się błędy. Rezygnuje z tych funkcji WŁAŚNIE dlatego, że wiem jak to zrobić i jakie konsekwencje by to miało.

No i to dowodzi, że nie wiesz jak się za te funkcje zabrać. Zrobiłeś to totalnie źle, nie wiesz w jaki sposób zrobić dobrze - tak aby dobrze działało i nie "pojawiały się błędy", więc rezygnujesz z tych funkcjonalności. Nieprawdaż>?

0

Nie. Rezygnuję z nich tylko ze względu na szybkość działania aplikacji. Czy to dowodzi, że nie wiem jak napisać algorytm by działał szybciej? Też nie do końca. Po prostu nie byłoby to kompatybilne z resztą programu. Szybkość jest tu kluczowa i niestety nie potrafiłbym jej poprawić w C++. Lepiej, więc by program działał szybciej i stabilniej aniżeli sprawiał problemy.

0

polaczku, prawdopodobnie z tych czy innych powodów warto zrobić PhotoYebatora 2.0. W najgorszym razie przyda Ci się to jako ćwiczenie na zapewnianie jakości kodu.

Jak dla Ciebie, tzn. piszącego samotnie i jeszcze nie super doświadczonego programisty, jest to całkiem duży projekt. W dużych projektach w kodzie łatwo robi się gnój. Niedopuszczanie do tego to jedna z najważniejszych umiejętności programisty. Ponieważ Ty sam piszesz ten projekt, nie masz deadline'ów ani głupich wymagań, nie uciekniesz tutaj od odpowiedzialności: jeśli kod zrobi się trudny do ogarnięcia, to będziesz wiedział, że to wyłącznie Twoja wina.

Projekt może Ci dać dobre sposobności do nauki inżynierii oprogramowania. Od takich bardziej makro rzeczy, jak planowanie struktury całego programu, po mikro zagadnienia jak nazewnictwo zmiennych i klas. Będziesz miał okazję wykorzystać trochę wzorców projektowych i -- co być może najważniejsze -- przeprowadzać refaktoryzacje. Bez tych ostatnich na pewno nie uda Ci się zapanować nad kodem. Tj. będziesz myślał, że "na początku było całkiem schludnie, ale potem jakoś się stoczyłem i zrobił się chaos" -- tymczasem łatwo napisać schludnie jakiś oderwany od rzeczywistości szkielecik, a potem go "spieprzyć" gdy przychodzi do implementacji prawdziwych funkcjonalności. Tak się składa, że nasz szkielecik nie do końca musiał się do nich nadawać. I dlatego refaktoryzacje są tak ważne. Tym ważniejsze w przypadku mniej doświadczonych programistów, którzy tym bardziej nie potrafią zaprojektować czegoś od początku dobrze (nawet starsi tego do końca nie potrafią).

Na pewno możesz się dużo nauczyć jeśli chodzi o programistyczne rzemiosło. Widzisz pewnie, że dość często ludzie tutaj proszą o pomysły na projekt ćwiczebny. Ty nie masz takiego problemu.

Osobna sprawa to to, czy nowy PhotoYebator będzie w jakikolwiek sposób użyteczny i przydatny komukolwiek.

Nie musi taki być, żeby napisanie go Ci się opłaciło. Możesz skopać kwestie użyteczności, badania przydatności i definiowanie wymagań. To są ważne rzeczy, ale jeśli w jednym projekcie, nawet w ciągu ROKU zaczniesz pisać w miarę przyzwoity kod, choćby w projekcie na 5-10k linii kodu, to osiągniesz więcej niż większość ludzi podczas trwania całych studiów informatycznych.

Jeśli jednak równolegle zrobisz coś przydatnego -- coś, co jest nie takim złym kawałkiem softu, to tym lepiej. Bo najważniejsza dla programisty jest właśnie umiejętność stworzenia dobrego softu. Tylko to taki mega-makro-cel, który osiąga się zwykle dopiero po wielu latach. Albo i nigdy.

Teraz co myślę o Twoich celach...

Szybkość -- praktycznie zawsze ważne. Tylko nie optymalizuj jak debil: poza pętlami, przypadkowo. Zależy Ci na praktycznej, widocznej optymalizacji wydajności. Będziesz mógł trochę poprofilować kod, poszukać wąskich gardeł i zająć się właśnie nimi. Użytkownicy praktycznie zawsze doceniają szybkość.

Obcięcie opcji -- bardzo dobry pomysł. Ale czy prędkość powinna być głównym powodem...? Generalnie obcinanie funkcjonalności jak tylko się da to super sprawa, ale robi się to głównie z innych powodów. Dla prostoty aplikacji! Na zasadzie: lub jedną (lub tylko kilka) rzeczy, ale za to bardzo, bardzo dobrze. Nie uszczęśliwiaj wszystkich, i tak nie zrobisz sam drugiego Photoshopa. Skoncentruj się na pewnej grupie użytkowników -- tych, którzy potrzebują zrobić to i to. I postaraj się, by tę czynność mogli wykonać wyjątkowo sprawnie i wygodnie. Z aplikacji staraj się wywalić wszystko, co nie jest kluczowe do wykonywania tych czynności.

Dzięki prostocie sukces odniosło np. Google. Może nie pamiętasz, ale kiedyś nie było wyszukiwarek takich jak Google czy bing, czy http://search.yahoo.com/ . Nie: Internet przeżywał boom, a wraz z boomem przyszły portale. Wielkie serwisy, które stanowiły praktycznie okno na całą resztę Internetu. Było na nich WSZYSTKO, targetowały wszystkich ludzi, którzy chcieli zrobić w Internecie cokolwiek. Na portalach było też i wyszukiwarki -- ale to było jedno pole tekstowe w gąszczu dziesiątek czy setek linków, newsów, artykułów itp. Google podeszło do sprawy inaczej: nie chciało robić wszystkiego, chciało tylko być najlepszą wyszukiwarką na świecie. WYwalili ze strony wszystko, co nie było związane z wyszukiwaniem. No i wszyscy wiemy, jak to się skończyło :).

Podobną taktykę stosują np. 37signals (polecam ich bloga http://37signals.com/svn oraz książki). Minimalizacja nieistotnych funkcjonalności. Maksymalizacja prostoty, łatwości obsługi, sprawności.

Wracając do PhotoYebatora...

Nie jestem przekonany do tych filtrów. Naprawdę ktoś by tego używał? Po co? Odpowiedz sobie na pytanie: czy nie wybrałeś tej funkcjonalności tylko dlatego, że jest "płaska" i najłatwiejsza (wbrew pozorom) do zaimplementowania? Widziałem kilka programów graficznych napisanych przez młodych programistów. Nie mówię tu o lipnych Paintach, tylko o ciut bardziej zaawansowanych rzeczach. O dziwo, chyba każdy jeden miał mnóstwo filtrów. Naprawdę dużo. Nie dam Ci linków do tych aplikacji, bo nikt ich nie używa i nigdzie ich nie ma ;).

Pomyśl nad jakimś prawdziwym scenariuszem. Po co ktoś miałby odpalić PhotoYebatora? Np. ktoś ma zdjęcie i chciałby z nim zrobić... no właśnie, co?

lukas_gab napisał(a)

Ja potrzebuje lekkiego programu graficznego z warstwami i prowadnicami oraz linijkami właśnie ;p Tutaj przyciąć screen, tam zrobić mały baner, czy jakiś button do programu. Dopasować, przeskalować tło, dobre zaznaczanie, takie automagiczne również etc. etc.

Sprawdź Paint.NET. Używam od lat, znacznie częściej niż Photoshopa czy GIMP-a. Gdy Paint.NET wchodził, został okrzyknięty aplikacją roku w swojej kategorii.

0

Dzięki za znakomite rady. Właściwie to każdy program jaki do tej pory robiłem robiłem dla doświadczenia właśnie. Dopiero przy programie graficznym mam nadzieję trafić do grona - choćby nawet nie szerokiego - użytkowników.
Co użytkownik chce zrobić ze zdjęciem? To jest znakomite pytanie i zadałem je sobie. odpowiedziałem tak:

  • zmieniać barwę
  • zmieniać kolor oczu
  • oczyszczać zabrudzenia np skóry, ubrań czy innych rzeczy
  • rozjaśniać DANE elementy. Nie tylko cały obraz
  • Poprawić kontrast. Ale także np pozostawiając ciemniejsze elementy ciemniejszymi a nie super czarnymi.
  • Zmodyfikować obraz tak by był czarno biały.
  • Poprawić jego ostrość jak i odwrotnie - rozmazać.
  • Wyciąć dany fragment z obrazu
  • przenosić elementy na zdjęciu
  • Korzystać z zaawansowanych narzędzi do rysowania. (aby mieć wpływ na jakość np ust, oczu, nosa, białek etc)
  • Tworzyć obrazy - realistyczne, sepie, stare itd.
  • tworzyć ramki
  • Stworzyć parę efektów dla szpanu jak np efekt rysowania długopisem

Itd. Właśnie w to mierzę.

Co do kodu to cały czas staram się trzymać zasad co do długości linijek kodu, uniwersalnych funkcji czy wspomnianej przez Ciebie kiedyś widoczności zmiennych i nazw. Pamiętam o tym i cały czas staram się trzymać tych zasad.
Po dwóch próbach stworzenia programu graficznego wiem jak unikać robienia syfu w kodzie, właśnie dlatego spokojnie bez pośpiechu i z przemyśleniami piszę klasę po klasie. Jestem naprawdę zadowolony ze swojej klasy "filter".
Inne klasy jak np odpowiednie okna interfejsu także będę spokojnie bez pośpiechu pisał z dodawaniem coraz to fajniejszych bajerków umilających pracę, jak wspomniana chyba już przeze mnie funkcja przyklejania okna do krawędzi.

Póki co kod jest elastyczny i łatwo daje się go modyfikować a to - przynajmniej póki co - jest dobrym znakiem.

No a co do nauki to tak jak chyba z każdym - najlepiej uczy praktyka. A im większy i bardziej skomplikowany projekt tym więcej się nauczymy.

Co do optymalizacji to trzymam się zasady, że najważniejsza jest czytelność kodu. (zaraz po jego poprawności rzecz jasna :P). Dlatego zamiast szaleńczo dbać o każde 20 milisekund wolę ładniej napisać kod i mieć spokój co zresztą niekiedy oznacza (ładniejszy kod) szybsze działanie aplikacji. Dwa w jednym :)

Co do obcięcia funkcji i powodu, to powiem tak: Gdyby nie szybkość to pewnie obciął bym funkcjonalności, ale pozostawił warstwy. A ponieważ z warstwami szybkości dobrej nie było to trzeba je było wywalić. Stąd moje powody, między innymi również szybkość.

Praktycznie program ograniczam do wywalenia:

  • warstw
  • tworzenia grafiki od podstaw

Całą reszta pozostaje w tej czy innej postaci.

0
polaczek17 napisał(a)

Co użytkownik chce zrobić ze zdjęciem? To jest znakomite pytanie i zadałem je sobie. odpowiedziałem tak:

  • zmieniać barwę
  • zmieniać kolor oczu
  • oczyszczać zabrudzenia np skóry, ubrań czy innych rzeczy
  • rozjaśniać DANE elementy. Nie tylko cały obraz
  • Poprawić kontrast. Ale także np pozostawiając ciemniejsze elementy ciemniejszymi a nie super czarnymi.
  • Zmodyfikować obraz tak by był czarno biały.
  • Poprawić jego ostrość jak i odwrotnie - rozmazać.
  • Wyciąć dany fragment z obrazu
  • przenosić elementy na zdjęciu
  • Korzystać z zaawansowanych narzędzi do rysowania. (aby mieć wpływ na jakość np ust, oczu, nosa, białek etc)
  • Tworzyć obrazy - realistyczne, sepie, stare itd.
  • tworzyć ramki
  • Stworzyć parę efektów dla szpanu jak np efekt rysowania długopisem

Z listy rzeczy, które podałeś, jedna zwróciła moją uwagę jako fajne zastosowanie dla przydatnego programu. Tyle że nie mam pojęcia czy dałbyś radę to sensownie zrobić.

Chodzi mi o taki prosty retusz (tzw. photoshopowanie) postaci/twarzy ludzkich.

Z tego jednego powodu Twój program mógłby znaleźć swoją niszę, zdobyć całkiem sporą liczbę użytkowników.

Ludzie dzisiaj pstrykają sobie mnóstwo cyfrowych fotek. Wystarczy spojrzeć na NK, Facebooka, niesławną Fotkę itp. Gdyby program pozwalał ŁATWO i przy sensownej jakości choćby usunąć efekt czerwonych oczu (dosłownie jednym przyciskiem!), wybielić zęby :D, przykryć parę niedoskonałości skóry (jednym brushem -- klikasz i skóra robi się tu gładka) i MOŻE ew. lekko wysmuklić sylwetkę... To wtedy zwykli ludzie naprawdę mogliby używać PhotoYebatora.

Fakt, nie celowałbyś w profesjonalnych grafików, a efekt działania Twojego programu na pewno nie mógłby się równać z profesjonalnym retuszem. Ale wystarczyłoby, żeby wyglądało to sensownie. Profesjonalny retusz jest dość trudny, profesjonalny grafik spędza nad nim dość sporo czasu (zależnie od jego doświadczenia i skali problemu na danym zdjęciu). Ludzie jednak nie mają Photoshopa, a nawet jak mają, to program ten jest zbyt trudny do ogarnięcia dla przeciętnego użytkownika Fotki.

Nie mówię, że masz iść w tę stronę, bo szczerze mówiąc nie mam pojęcia czy sam dałbym radę napisać taki program na sensownym poziomie (dawno nie zajmowałem się przetwarzaniem obrazów). Ale chodzi mi o to, że teoretycznie mógłbyś ograniczyć skalę funkcjonalności progsa do takiego właśnie obszaru.

Zobacz np. na aplikację dla iPada o nazwie Draft: http://37signals.com/draft . Jest mega prosta, a w dodatku, jak na app store... droga, ale zarobiła dla 37signals ze 20 tys. dolców. Służy do jednego celu: narysowania prostego schematu interfejsu aby go wrzucić do Campfire (takiego czatu 37signals). W Drafcie obcięli do minimum nawet kolory, jakich możesz użyć w schemacie (jest tylko biały lub czerwony). Wygląda to prościutko, ale tak naprawdę aplikacja robi ciut więcej, tyle że praktycznie niezauważalnie. Ma auto-save, wiele poziomów Undo/Redo, no i integrację z Campfire.

Wg mnie nawet gdybyś zrobił coś równie prostego, ale za to naprawdę byś to dopieścił -- tak funkcjonalnie, jak i od strony kodu -- wyszedłbyś na tym bardzo dobrze.

0

Co do tego filtru (filtrów) które opisałeś to są one już teraz u mnie na dysku zrobione. Brakuje im jednak doszlifowania i dopieszczenia takiego by nie było zgrzytów. Spokojnie jednak bo dam radę to zrobić :) I to z całkiem dobrym wynikiem szybkości. (oczywiście owe narzędzia to nie tyle filtry co specjalne pędzle do wykorzystania - ala "łatka" znana z PhotoSHopa)

Zaś czerwone oczy to kwestia:

  • użytkownik maluje specjalnym pędzlem oczy (nie specjalnie dokładnie byle tylko pokazać, że tam jest oko)
  • Klika "usuń czerwone oczy" i już. Ewentualne funkcje usuwania czerwonych oczu to dodatkowe opcje jak np intensywność czarnego koloru na rogówce lub ilość odbijającego się światła w oczach.

Wybielenie zębów to z kolei skorzystanie z filtrów i wygląda DOKŁADNIE tak samo jak w Photoshopie. Nawet w poprzedniej wersji PhotoYebatora było to możliwe.

Wygładzanie skóry to tak jak wyżej napisałem też mam już wykodzone brakuje jednak dopieszczenia. (czasami dało się zauważyć, że miał miejsce retusz a chcę się tego pozbyć stąd muszę wymyślić jakby taki mały próg procentowy we wzorze).

0

@Polaczek - Same filtry dadzą Ci coś takiego:
polaczek.png
Jest to ciekawy pomysł, szczególnie jeśli filtry byłyby 'fajne', ale nie takie coś chcesz chyba uzyskać ;)

Do postów @BS się nie odniosę bo nie mam nawet z czym się nie zgodzić...

0

Tak by to wyglądało wcześniej teraz to będzie wyglądać np tak:
(to oczywiście nie jest menu programu jakby co :D)

user image

user image

Oczywiście plus to wszystko opatrzyć w jakieś panele, które dodadzą efekt wypuklenia bądź wklęsłości i niekiedy parę CheckBox-ów.
Menu "Kontrast" będzie miało z 5 list a w każdej z tych list będzie jeden ComboBox a w nim 6 różnych metod :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1