<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>stream of bytes &#187; canvas</title>
	<atom:link href="http://diary.braniecki.net/tag/canvas/feed/" rel="self" type="application/rss+xml" />
	<link>http://diary.braniecki.net</link>
	<description>Open-source development violates almost all known management theories.</description>
	<lastBuildDate>Thu, 26 Jan 2012 11:03:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Zmiana rozmiaru zdjęcia z uwzględnieniem zawartości</title>
		<link>http://diary.braniecki.net/2009/07/20/zmiana-rozmiaru-zdjecia-z-uwzglednieniem-zawartosci/</link>
		<comments>http://diary.braniecki.net/2009/07/20/zmiana-rozmiaru-zdjecia-z-uwzglednieniem-zawartosci/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 20:56:16 +0000</pubDate>
		<dc:creator>zbraniecki</dc:creator>
				<category><![CDATA[main]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[zdjęcie]]></category>

		<guid isPermaLink="false">http://diary.braniecki.net/?p=982</guid>
		<description><![CDATA[Poniższy tekst jest tłumaczeniem artykułu &#8220;Content aware image resizing&#8220;, zamieszczonego na stronie hacks.mozilla.org na licencji Creative Commons Attribution 3.0 United States License. Autorem tekstu jest Christopher Blizzard. Spis wszystkich tłumaczeń artykułów z hacks.mozilla.org dostępny jest na stronach wiki.aviary.pl. Obejrzyj demo w Firefox 3.5. Zmiana rozmiaru obrazka z uwzględnieniem zawartości jest metodą skalowania obrazka bez zniekształcania [...]]]></description>
			<content:encoded><![CDATA[<p><em>Poniższy tekst jest tłumaczeniem artykułu &#8220;<a href="http://hacks.mozilla.org/2009/06/content-aware-image-resizing/">Content aware image resizing</a>&#8220;, zamieszczonego na stronie <a href="http://hacks.mozilla.org/">hacks.mozilla.org</a> na licencji <a rel="license" href="http://creativecommons.org/licenses/by/3.0/us/">Creative  Commons Attribution 3.0 United States License</a>. Autorem tekstu jest  Christopher Blizzard. Spis wszystkich tłumaczeń artykułów z  hacks.mozilla.org dostępny jest na stronach <a href="http://wiki.aviary.pl/Mozilla:Hacks">wiki.aviary.pl</a>.</em></p>
<p><a style="font-size:1.5em;" href="http://labs.pimsworld.org/wp-content/uploads/2009/04/demo-content-aware-image-resizing-2/" target="_blank"><strong>Obejrzyj demo w Firefox 3.5.</strong></a></p>
<p><em><img class="alignleft size-full wp-image-983" style="margin-right: 10px;" title="200px-nasa-cair" src="http://diary.braniecki.net/wp-content/uploads/2009/07/200px-nasa-cair.jpg" alt="200px-nasa-cair" width="200" height="348" />Zmiana rozmiaru obrazka z uwzględnieniem zawartości</em> jest metodą skalowania obrazka bez zniekształcania zawartości, innymi słowy: nielinearne rozszeranie obrazków. Algorytm ten został po raz pierwszy opisany przez Shai Avidan i Ariela Shamira i opublikowany w 2007 (“<a href="http://www.faculty.idc.ac.il/arik/site/seam-carve.asp">Seam  Carving for Content-Aware Image Resizing</a>.”)</p>
<p>Od tego czasu powstało kilka świetnych implementacji tego algorytmu dostępnych na licencjach wolnego oprogramowania takich jak <a href="http://liquidrescale.wikidot.com/">wtyczka</a> do Gimpa czy <a href="http://brain.recall.googlepages.com/cair">CAIR</a> &#8211; aplikacja napisana w C++.</p>
<p>Teraz, dzięki Canvas i językowi JavaScript możliwe jest wykonanie tego w przeglądarce bez użycia wtyczki.</p>
<p>Od wersji 1.5, Firefox oferuje możliwość manipulacji bitmapą z poziomu API Canvas. Wersja 3.5 nie tylko wprowadza jeszcze szybszy silnik JavaScript, ale też dodaje nową metodę dla Canvas &#8211; <a href="https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object">createImageData</a> &#8211; umożliwiając tworzenie nowych rozwiązań.</p>
<p>Na potrzeby tego dema został zaimplementowany fragment algorytmu do zmiany rozmiaru obrazka z uwzględnieniem zawartości. Szerokość zdjęcia może byc zmieniana dynamicznie bez zmiany jego wysokości. Ta implementacja korzysta z wykrawania szwów (<em>seam carving</em>) do zmiany rozmiary obrazka, śledząc mało widoczne pionowe linie.<br />
<img class="alignright size-full wp-image-984" style="margin-left: 10px" title="200px-cair-steps" src="http://diary.braniecki.net/wp-content/uploads/2009/07/200px-cair-steps.jpg" alt="200px-cair-steps" width="200" height="490" />Jest to cztero-krokowy algorytm zagnieżdzony. Jedna iteracja zmienia rozmiar obrazka o jeden piksel. Na początek obrazek jest pobierany do kontekstu Canvas, a następnie rozpoczyna się iteracja:</p>
<ol>
<li>Zdjęcie jest przeliczane do skali szarości</li>
<li>Obliczane są krawędzie na zdjęciu (Użyty jest algorytm o nazwie <a href="http://en.wikipedia.org/wiki/Sobel_operator">Sobel convolution</a>) oraz jego matryca energetyczna</li>
<li>Wykrywane są szwy o najmniejszej energii (pionowe linie o grubości 1 piksela nieprzerwanie idące od góry do dołu matrycy energetycznej)</li>
<li>Nastepnie piksel z wykrytego szwu jest usuwany z oryginalnego zdjęcia i wynik jest wklejany jako źródło dla kroku 1</li>
</ol>
<p>Każdy z poprzednich kroków przechowuje w rozmiarze źródła zdjęcia całą matrycę danych. Choć te matryce nie są pełnymi zdjęciami, tylko artefaktami po algorytmie, przechowywanie ich jest znacznie wygodniejsze niż użycie prostych tablic (<em>JS Array</em>) i dlatego własnie wykorzystana jest tu metoda kontekstu Canvas o nazwie createImageData. Jedną z zalet zastosowania takiego procesu jest to, że można pokazywać pośrednie kroki które zostały wykonane w trakcie obliczania efektu końcowego.</p>
<p>To demo pokazuje w jaki sposób można wykonać bardziej inteligentne zmienianie rozmiar obrazka niż proste spłaszczanie pikseli w CSS. Mając możliwości manipulowania obrazek oraz moc obliczeniową dostępną z poziomu przeglądarki otwiera nowy zakres możliwości do tworzenia aplikacji WWW prezentujących dane wizualne użytkownikom. A to demo to przecież korzysta tylko z ułamka tych możliwości&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://diary.braniecki.net/2009/07/20/zmiana-rozmiaru-zdjecia-z-uwzglednieniem-zawartosci/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mozilla naprawia IE &#8211; piekło zamarza?</title>
		<link>http://diary.braniecki.net/2008/08/21/mozilla-naprawia-ie-pieklo-zamarza/</link>
		<comments>http://diary.braniecki.net/2008/08/21/mozilla-naprawia-ie-pieklo-zamarza/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 09:19:04 +0000</pubDate>
		<dc:creator>zbraniecki</dc:creator>
				<category><![CDATA[main]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[pl]]></category>

		<guid isPermaLink="false">http://diary.braniecki.net/?p=577</guid>
		<description><![CDATA[Ostatnio pojawiły się artykuły na temat kilku projektów wewnątrz Mozilli mających pomóc unowocześnić Internet Explorera, &#8220;No browser left behind&#8221; Vlada dodający Canvas do IE, czy ScreamingMonkey dający obsługę nowoczesnego JavaScriptu (w założeniu JS2.0) w IE. Dostałem kilka maili z pytaniami w tej sprawie, parę osób podpytało na Jabberze, a na vortalu DobreProgramy komentatorzy spędzają czas [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio pojawiły się artykuły na temat kilku projektów wewnątrz Mozilli mających pomóc unowocześnić Internet Explorera, &#8220;<a href="http://blog.vlad1.com/2008/07/30/no-browser-left-behind/">No browser left behind</a>&#8221; Vlada dodający Canvas do IE, czy <a href="https://wiki.mozilla.org/Tamarin:ScreamingMonkey">ScreamingMonkey</a> dający obsługę nowoczesnego JavaScriptu (w założeniu JS2.0) w IE.</p>
<p>Dostałem kilka maili z pytaniami w tej sprawie, parę osób podpytało na Jabberze, a na vortalu <a href="http://dobreprogramy.pl/index.php?dz=15&amp;n=9636&amp;Mozilla+naprawi+Internet+Explorera">DobreProgramy</a> komentatorzy spędzają czas radośnie próbując znaleźć wytłumaczenie dla tego ruchu.</p>
<p>Co ciekawe, wśród tak wielu teorii ukutych na prędce zabrakło tej jednej, rzeczywistej. I wydaje mi się to bardzo symptomatyczne dla współczesnego myślenia, że tego typu wytłumaczenia rzadko przychodzą do głowy.</p>
<p>Wytłumaczenie to brzmi &#8211; <strong>celem statutowym Mozilli Foundation jest promocja wyboru i innowacji w Internecie</strong>.</p>
<p>Takie trudne? My nie walczymy o zajęcie rynku przez naszą przeglądarke. My walczymy o to, aby Internet sie rozwijał i uznaliśmy, że optymalnym sposobem do tego jest stworzenie i promocja przeglądarki, która zagwarantuje rozwój Internetu w modelu opisanym w <a href="http://www.mozilla.org/about/manifesto">Manifeście Mozilli</a> (<a href="http://wiki.aviary.pl/U%C5%BCytkownik:Gandalf/Manifest_Mozilli">tłum pl w trakcie prac</a>).</p>
<p>Mozilla jest otwartym projektem i działa bardziej jak Bazar, czy środowisko naturalne, niż jak Katedra &#8211; zorganizowana i uporządkowana. Wiele rzeczy to inicjatywy oddolne i tak jest w tym przypadku. Ludzie wewnątrz projektu chcą poprawiać świat i jeśli Vlad zauważył, że przeszkodą w adaptacji technologii Canvas jest brak jej wsparcia w IE oraz udało mu się opracować jak to dodać, to jest to idealnie wpisane w model jaki chcemy promować w Internecie.</p>
<p>Tym właśnie, tą różnicą w podejściu, tym, że celem nr.1 każdej firmy są pieniądze, a standardy, otwartość, użytkownicy są środkiem do tego celu, a u nas jest, z definicji fundacji non-profit, odwrotnie wyróżniamy się na rynku i to czyni naszą odpowiedzialność ogromną, a naszą pozycję i nasze możliwości unikalne.</p>
]]></content:encoded>
			<wfw:commentRss>http://diary.braniecki.net/2008/08/21/mozilla-naprawia-ie-pieklo-zamarza/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

