Long time no see …

Kategorija: Faks,Programiranje,Razno — Napisal ZeroCool, 22.5.2010 @ 21:53

Razlog … faks. Zadnje čase se ukvarjam z manipulacijo slik v Javi. Se pravi risanje histogramov, urejanjem kontrasta, enačenjem histograma ipd. Če bo mogoče komu koristila tale majčkena stvarca; funkcija sprejme BufferedImage in en integer (razlaga v komentarju kode), vrne pa sliko histograma velikosti 255×150.

Malce več razlage bom dopisal naslednjič, ko bo več časa : ).

  1.     // ############################################################################################### //
  2.     //                             DRAWING HISTOGRAMS, MAKING HISTOGRAMS                               //
  3.     // ############################################################################################### //
  4.  
  5.     /*
  6.      * Draw an image histogram
  7.      *
  8.      * Author: Boštjan Cigan (ZeroCool), some rights reserved.
  9.      * http://zerocool.area52.us
  10.      * Can be distributed as long as comments stay intact.
  11.      *
  12.      * Function call:
  13.      * BufferedImage histogram = drawHistogram(image, color)
  14.      *
  15.      * Where color is an integer which represents:
  16.      * 0 – Red
  17.      * 1 – Green
  18.      * 2 – Blue
  19.      * 3 – Average
  20.      *
  21.      */
  22.     public static BufferedImage drawHistogram(BufferedImage input, int color) {
  23.  
  24.         int[] histogramValues = new int[256];
  25.         int pixel = 0;
  26.         int fill = colorToRGBNoAlpha(255, 255, 255);
  27.  
  28.         switch(color) {
  29.  
  30.             case 0: {
  31.                 histogramValues = imageHistogram(input).get(color);
  32.                 pixel = colorToRGBNoAlpha(255, 0, 0);
  33.                 break;
  34.             }
  35.             case 1: {
  36.                 histogramValues = imageHistogram(input).get(color);
  37.                 pixel = colorToRGBNoAlpha(0, 255, 0);
  38.                 break;
  39.             }
  40.             case 2: {
  41.                 histogramValues = imageHistogram(input).get(color);
  42.                 pixel = colorToRGBNoAlpha(0, 0, 255);
  43.                 break;
  44.             }
  45.             case 3: {
  46.                 histogramValues = imageHistogramAverage(input);
  47.                 pixel = colorToRGBNoAlpha(0, 0, 0);
  48.                 break;
  49.             }
  50.         }
  51.  
  52.         int maxVal = findMaxValue(histogramValues);
  53.         BufferedImage histogram = new BufferedImage(255, 130, BufferedImage.TYPE_3BYTE_BGR);
  54.  
  55.         float drawValue = (float) (130.0/maxVal);
  56.  
  57.         int[] drawedValues = new int[256];
  58.         for(int i=0; i<drawedValues.length; i++) {
  59.             drawedValues[i] = (int) (histogramValues[i]*drawValue);
  60.         }
  61.  
  62.         for(int i=0; i<histogram.getWidth(); i++) {
  63.             for(int l=0; l<histogram.getHeight(); l++) {
  64.                 histogram.setRGB(i, l, fill);
  65.             }
  66.         }
  67.  
  68.         for(int j=0; j<histogram.getWidth(); j++) {
  69.  
  70.             if(drawedValues[j] > 0) {
  71.                 histogram.setRGB(j, Math.abs(drawedValues[j]-130), pixel);
  72.  
  73.                 for(int k=Math.abs(drawedValues[j]); k>0; k–) {
  74.                     histogram.setRGB(j, Math.abs(k-130), pixel);
  75.                 }
  76.  
  77.             }
  78.         }
  79.  
  80.         return histogram;
  81.  
  82.     }
  83.  
  84.     // Return a histogram containing average values from R, G, B channels
  85.     public static int[] imageHistogramAverage(BufferedImage input) {
  86.  
  87.         int[] histogram = new int[256];
  88.  
  89.         for(int i=0; i<input.getWidth(); i++) {
  90.             for(int j=0; j<input.getHeight(); j++) {
  91.  
  92.                 int red = new Color(input.getRGB (i, j)).getRed();
  93.                 int green = new Color(input.getRGB (i, j)).getGreen();
  94.                 int blue = new Color(input.getRGB (i, j)).getBlue();
  95.  
  96.                 int avg = (int) (red + green + blue)/3;
  97.                 histogram[avg]++;
  98.  
  99.             }
  100.         }
  101.  
  102.         return histogram;
  103.  
  104.     }
  105.  
  106.     // Return an ArrayList containing histogram values for separate R, G, B channels
  107.     public static ArrayList<int[]> imageHistogram(BufferedImage input) {
  108.  
  109.         int[] rhistogram = new int[256];
  110.         int[] ghistogram = new int[256];
  111.         int[] bhistogram = new int[256];
  112.  
  113.         for(int i=0; i<rhistogram.length; i++) rhistogram[i] = 0;
  114.         for(int i=0; i<ghistogram.length; i++) ghistogram[i] = 0;
  115.         for(int i=0; i<bhistogram.length; i++) bhistogram[i] = 0;
  116.  
  117.         for(int i=0; i<input.getWidth(); i++) {
  118.             for(int j=0; j<input.getHeight(); j++) {
  119.  
  120.                 int red = new Color(input.getRGB (i, j)).getRed();
  121.                 int green = new Color(input.getRGB (i, j)).getGreen();
  122.                 int blue = new Color(input.getRGB (i, j)).getBlue();
  123.  
  124.                 rhistogram[red]++; ghistogram[green]++; bhistogram[blue]++;
  125.  
  126.             }
  127.         }
  128.  
  129.         ArrayList<int[]> hist = new ArrayList<int[]>();
  130.         hist.add(rhistogram);
  131.         hist.add(ghistogram);
  132.         hist.add(bhistogram);
  133.  
  134.         return hist;
  135.  
  136.     }
  137.  
  138.     // Find max value in an array
  139.     public static int findMaxValue(int[] input) {
  140.        
  141.         int maximum = input[0];
  142.         for(int i=1; i<input.length; i++) {
  143.             if(input[i] > maximum) {
  144.                 maximum = input[i];
  145.             }
  146.         }
  147.        
  148.         return maximum;
  149.    
  150.     }
  151.  
  152.     // Convert R, G, B to standard 8 bit
  153.     private static int colorToRGBNoAlpha(int red, int green, int blue) {
  154.  
  155.         int newPixel = 0;
  156.         newPixel += red; newPixel = newPixel << 8;
  157.         newPixel += green; newPixel = newPixel << 8;
  158.         newPixel += blue;
  159.  
  160.         return newPixel;
  161.  
  162.     }

Študentski zajtrki #3 – FF

Kategorija: Faks,Kuhanje,Študentski zajtrki — Napisal ZeroCool, 05.3.2009 @ 21:57

Pred kratkim sem se končno odločil “obdelati” filozofsko fakulteto. Največ sem tuhtal, kaj sestviti za punce na filozofski (in tudi tisto peščico fantov kolikor jih je) za zajtrk. Ker so punce na FF-ju večinoma čisto preproste in prijazne, sem se odločil za nekaj čisto preprostega in prvinskega in sicer zdrob z limoninim in pomarančnim sokom, na vrhu pa dušena jabolka in rozine v medu in maslu. Pa malce orehcev še :  ).

ŠTUDENTSKI FF ZAJTRK
(FF = Filozofska fakulteta)

Potrebujemo (za 2 osebi):

  • Zdrob za kuhanje
  • 1 jabolko
  • 2 žlici meda
  • 2 žlici soka pomaranče
  • 1 žlica soka limone
  • 3 žlice rozin
  • 1 košček masla (majhen “paketek”)
  • Cimet (po želji)
  • Orehi, suho sadje (po želji)

Student FF breakfast Skuhajte zdrob po navodilih na vrečki. Ko se skuha, dodajte limonin in pomarančni sok in premešajte. Narežite jabolko na manjše koščke. V ponvi segrejte maslo da se stopi, dodajte jabolka in rozine, minuto kasneje pa še med. Vse skupaj dušite dokler jabolko in rozine ne potemnijo. Dodajte zdrob v servirno posodico, na vrh pa dodajte jabolka, rozine in nastalo “omako” iz meda in masla. Po želji še dodajte orehe in suho sadje. Osebno sem za dekoracijo še dodal čokoladni preliv na rob skodelice.

Pa začnimo nov semester … piščančje

Kategorija: Faks,Kuhanje — Napisal ZeroCool, 16.2.2009 @ 22:23

Danes se je začel nov semester. V bistvu se mi je letos prvič zgodilo da sem komaj čakal začetek : ). Trčeno, a ne? Saj se tudi sam počutim tako. Projekt “Študentski zajtrki” napreduje, trenutno iščem ideje za farmacevte, kemike, strojnike : ). Danes bom objavil en super recept, ki totalno razblini mit o dolgočasnemu hamburgerju. Tradicionalno je hamburger sestavljen iz pleskavice, solate, paradižnika, omake, čebule in mogoče še sira. Tale ideja o novem hamburgerju prihaja iz Amerike, ene stojnice, kjer so ga prvič pričeli prodajati. Postal je uspeh. Nekako ko sem prebral sestavine, sem ga poskušal tudi sam rekreirati iz nule. Po opisih sodeč mi je to tudi uspelo ; ). Dovolj blebetanja, recept je tukaj : ).

PIŠČANČJI HAMBURGER S KITAJSKIM ZELJEM

Potrebujemo (za 2 osebi):

  • 1/2 manjše zeljnate glave
  • 2 lepinji
  • 2 piščančja fileja
  • 1 jajce
  • 5 žlic moke
  • 5 žlic drobtin
  • 1 dl mleka
  • 8 žlic maka
  • 1 žlica medu
  • 5 žlic kisa
  • 3 žlice olivnega olja
  • 1 česen

Chickenburger with chinese colesaw Potolčite fileja in jih namočite v mleko za dve uri. Pripravite tri posodice. V eno dodajte moko, v drugo stepeno jajce, v tretjo drobtine. Namočite oba fileja v vse posodice. Ocvrite piščanca v olju. Nasekljajte česen. V kozarček dodajte olivno olje, česen, kis in mak. Dobro premešajte. Operite zelje in ga nasekljajte na rezine. Prelijte z dresingom in medom, dodajte sol in poper po okusu ter premešajte.  Prepolovite lepinjo. Vanjo dajte ocvrtega piščanca in zelje.

Grandma pancakes

Kategorija: Faks,Kuhanje — Napisal ZeroCool, 07.12.2008 @ 13:16

Osebno imam zelo rad palačinke. Verjetno nisem edini. Se pa vedno spomnem ene in edinstvene file, ki je bila narejena iz skute in iz nutelle (ali črne viki kreme). Skupaj naredita odlično kombinacijo za filo za palačinke. Seveda jih obstaja milijon, a ta je posebna : )

BABIČINE PALAČINKE

Potrebujemo (za 4 osebe):

  • 3 jajca
  • 0.5 l mleka
  • 250 g moke
  • Ščepec soli
  • 1/2 limonine lupinice
  • 2 žlici radenske
  • 1/2 manjše Nutelle
  • 100-200 g skute
  • 2 žlički sladkorja

babičine palačinke_f Prvih šest sestavin dobesedno zmečite v plastično posodico in z mešalnikom premešajte dokler ne dobite polgoste zmesi. Za dodaten okus lahko date še eno žličko pomarančnega soka. Zmes pustite stati pol ure. Na večji ponvi segrejte eno žličko olja. Ko se raztopi, z manjšo zajemalko pričnite od roba dodajati zmes (vmes obračajte). Ko bo spodaj malce porumenela oziroma bo vlekla na rjavo, obrnte in popecite še na drugi strani. Zmešajte nutello in skuto v ponvi in dodajte še dve žlički sladkorja. Dodajte v palačinko, prepognite in servirajte na krožniku z malce posutega sladkorja v prahu.

Bralcem bloga se pa hkrati opravičujem za takšne zamude pri mojih objavah … Veliko je dela s faksom, pa tudi pri pisanju knjige (nekaj v zvezi s podatkovnimi bazami in SQL jezikom). Pri nabasanemu urniku pa raje ne kuham, če ne lahko pride ven kaj … čudnega : ). Lep pozdrav do naslednjič ; ).

Delovno, delovno …

Kategorija: Faks,Kuhanje — Napisal ZeroCool, 27.8.2008 @ 03:03

Shrani.siKo se začnejo novi izpitni roki skorajda nimam več časa za kuhanje. Učenje od enih ponoči pa do sedmih zjutraj (red bull, bulldog, guarana, energia, dark dog, dragon so vsi postali moji najboljši prijatelji čez noč). Trenutno si verjetno vsak misli da sem malce zapsihiran, ker pišem tale zapis okoli štirih zjutraj, samo malce oddiha si pa le moram privoščiti od učenja, ali pač : ). Danes (ob pisanju že včeraj) sem malce eksperimentiral s kombinacijo džuveča, rukole in inčunov. Jed je lahko odlična predjed ali pa samostojna jed.

TESTENINE NA POSTELJICI IZ RUKOLE

Potrebujemo (za 2 osebi):

  • 10 žlic Džuveča (Tuš)
  • 1 škatlico filejev inčunov (okoli 8 komadov)
  • 1/4 škatle Barilla no. 1 testenin
  • 4 žlice olivnega olja
  • 2 zrni česna
  • 6 pesti rukole
  • Sol, poper

Shrani.siSkuhajte testenine (al dente). Dodajte olivno olje v ponev in vanjo dodajte nasekljan česen. Pričnite peči in ko se obarva zlato rumeno dodajte inčune. Ko inčuni malce razpadejo, dodajte džuveč in segrevajte še okoli štiri minute. Ko so testenine skuhane, odcedite vodo in vanjo dodajte omako. Sedaj dodajte še štiri pesti rukole, ščepec soli in popra, premešajte in pokrijte s pokrovko toliko časa, dokler se rukola malce ne “skuha”. Na krožnik dodajte preostalo pest rukole, nanjo pa položite testenine. Po želji naribajte še parmezan.

Sedaj pa učenje naprej … : ).

Teče na Wordpress | Powered by Kaley, Gostuje SCE
© 2006-10 Boštjan Cigan (ZeroCool). Vse pravice pridržane.