- optimaaliset kuvat uskomattomilla nopeuksilla
- Aloita imageflow_toolilla (suositellaan)
- Käyttämällä imageflow_serveriä dynaamiseen kuvankäsittelyyn
- Demon lisäksi
- Esimerkkejä
- Libimageflow’n käyttäminen kielestäsi
- Tämän projektin sisältämät laatikot
- Tunnetut virheet ja puuttuvat ominaisuudet (toukokuussa 2020)
- Virheet
- Puuttuvat ominaisuudet
- Viivästyneet ominaisuudet
- Rakentaminen lähdekoodista Dockerin avulla
- Linux-edellytykset
- Mac OS Edellytykset
- Windows WSL (Ubuntu Bionic Subsystem) Edellytykset
- Windows 10 Edellytykset
- Miten oppii kuvankäsittelyä webiä varten?
optimaaliset kuvat uskomattomilla nopeuksilla
license:
- imageflow_tool on komentorivityökalu kokeilemiseen, erätöiden suorittamiseen,tai kun haluat eristää prosessin. Jopa 17x nopeampi kuin ImageMagick. Tuottaa myös pienempiä tiedostoja paremmalla laadulla.
- imageflow_server voi ajaa JSON-tehtäviä tai manipuloida kuvia lennon aikana (esim.
/bucket/img.jpg?w=200
) käytettäväksi suoraanHTML:stä. Lähdekuvat voivat sijaita blob-tallennuksessa, toisella palvelimella tai tiedostojärjestelmässä. Tuotantokäyttöön suosittelemme kuitenkin Imageflow.NET-palvelinta, joka on paljon monipuolisempi eikä tarvitse käänteistä välityspalvelinta turvallisuuden vuoksi. - libimageflow on tarkoitettu suoraan (prosessin sisäiseen) käyttöön ohjelmointikielestäsi. Katso Node-sidonnat, Go-sidonnat, Scala-sidonnat, Elixir-sidonnat tai .NET-sidonnat. Jos meillä ei vielä ole sidoksia kielellesi, harkitse päivän käyttämistä niiden lisäämiseen. Imageflow’lla on simpleC-yhteensopiva ABI, josta tarvitaan vain 4 metodia sidosten toteuttamiseen.
Avaa ongelma, jotta voimme kirjoittaa esimerkkikoodia käyttötapaukseesi. Uskomme palautteeseen perustuvaan suunnitteluun, ja reaalimaailman käytön virtaviivaistaminen on nopein tie loistavaan tuotteeseen.
Querystring API -dokumentaatio
JSON API -dokumentaatio
libimageflow, imageflow_tool ja imageflow_server ovat saatavana itsenäisinä binääripaketteina Windowsille, Ubuntulle ja Macille. Tarjoamme myös Docker-kuvia Linuxille (jossa tarvitaan glibc ja OpenSSL).
Kiitämme tukijoitamme Kickstarterissa ja monia ImageResizerin tukijoita siitä, että he tekivät tästä projektista totta.Käy osoitteessa Imageresizing.net, jos tarvitset AGPLv3-poikkeuksen kaupalliseen käyttöön.
Aloita imageflow_toolilla (suositellaan)
imageflow_tool examples --generate
– luo esimerkkihakemiston, jossa on JSON-tehtäviä ja kutsuskriptejä.
Voit käyttää komentojonoja, jotka ovat yhteensopivia ImageResizer 4:n kyselyjonojen kanssa:
imageflow_tool v1/querystring --in source.jpg --out thumb.jpg --command "width=50&height=50&mode=crop&format=jpg"
Ota lähetä JSON-tehtävätiedosto. JSON-työtehtävissä voi olla useita tuloja ja lähtöjä, ja ne voivat edustaa mitä tahansa operaatiograafia.
Seuraava esimerkki tuottaa usean kokoisen kuvan esimerkkitehtävätiedostosta:
imageflow_tool v1/build --json examples/export_4_sizes/export_4_sizes.json --in waterhouse.jpg --out 1 waterhouse_w1600.jpg 2 waterhouse_w1200.jpg 3 waterhouse_w800.jpg 4 waterhouse_w400.jpg --response operation_result.json
Esimerkkinä imageflow_tool tulostaa oletusarvoisesti JSON-vastausviestin stdoutiin. Kirjoitat tämän levylle --response
:llä.
--debug-package
luo .zip-tiedoston, jolla toistetaan ongelmallinen käyttäytyminen sekä v1/build
:n että v1/querystring
:n kanssa. Lähetä vikailmoituksia; yritämme tehdä siitä helppoa.
Käyttämällä imageflow_serveriä dynaamiseen kuvankäsittelyyn
imageflow_server start --demo
Nyt voit muokata kuvia HTML:stä… ja käyttää srcset-ohjelmaa ilman päänvaivaa.
<img src="http://localhost:39876/demo_images/u3.jpg?w=300" /><img src="" srcset=" http://localhost:39876/demo_images/u3.jpg?w=300 300w http://localhost:39876/demo_images/u3.jpg?w=800 800w http://localhost:39876/demo_images/u3.jpg?w=1600 1600w" />
Demon lisäksi
Haluat liittää erilaiset kuvien lähdepaikat esiinnousuihin. Komento --mount
jäsentää kaksoispisteellä (:
) erotetun argumenttiluettelon. Ensimmäinen on etuliite, jota käytät URL-osoitteessa (kuten http://localhost:39876/prefix/
. Toinen on moottorin nimi. Loput argumentit lähetetään moottorille.
Esimerkkejä
--mount "/img/:ir4_local:C:\inetpub\wwwroot\images"
-
--mount "/proxyimg/:ir4_http:https:://myotherserver.com/imagefolder/"
(huomaa kaksoispisteen kaksinkertainen välilyönti) --mount "/cachedstaticproxy/:permacache_proxy:https:://othersite.com"
--mount "/githubproxy/:permacache_proxy_guess_content_types:https:://raw.github.com/because/it/doesnt/support/content/types"
--mount "/static/":static:./assets"
Libimageflow’n käyttäminen kielestäsi
- .NET Standardisidokset löytyvät osoitteesta https://github.com/imazen/imageflow-dotnet
- Node-sidokset saatavilla osoitteesta https://github.com/imazen/imageflow-node
- Ruby – Perussidokset löytyvät osoitteesta bindings/ruby/
- C- ja C++ -rajapinta on vakaa – käytä bindings/headers/imageflow_default.h tai jotakin monista vaihtoehtoisista konventioista, jotka toimitetaan jokaisen julkaisun mukana.
- Rust – Imageflow on kirjoitettu Rust-kielellä, joten voit käyttää
imageflow_core
cratea. - muut kielet – Käytä kielesi FFI-sidontatyökalua ja syötä sille se otsikkotiedosto, josta se pitää eniten.
Voit myös huomata, että imageflow_tool
on tarpeeksi nopea tarpeisiisi.
Tämän projektin sisältämät laatikot
- imageflow_abi – libimageflow/imageflow.dll:n vakaa API.Libimageflow’n otsikot sijaitsevat
bindings/headers
- imageflow_tool – Komentorivityökalu
- imageflow_server – HTTP-palvelin
- c_components – C-lähdekoodin sisältävä rust-luokka
- c_components/tests – Testit C-komponenteille
- imageflow_types – Useimmissa luokkakoodeissa käytettävät jaetut tyypit, JSON-serialisoinnilla
- imageflow_helpers – Yleiset apufunktiot ja apuohjelmat
- imageflow_riapi – RIAPI- ja ImageResizer4-yhteensopivuus parsing/layout
- imageflow_core – RIAPI- ja ImageResizer4-yhteensopivuus – RIAPI- ja ImageResizer4-yhteensopivuus – RIAPI-yhteensopivuus Pääkirjasto ja suoritusmoottori
Tunnetut virheet ja puuttuvat ominaisuudet (toukokuussa 2020)
Virheet
- imageflow_server ei vielä paljasta JSON API:ta.
- Ei vielä fuzz-testausta tai kolmannen osapuolen auditointia.
Puuttuvat ominaisuudet
- Blurring.
Viivästyneet ominaisuudet
- Työn kustannusten ennustaminen (viivästynyt – ei kiinnostusta yhteisöltä)
Tarvitset muutakin kuin Rustia kääntääksesi Imageflow’n, koska sillä on muutama C-riippuvuus.
- Asenna alustakohtaiset ennakkoedellytykset (löydät oikean kohdan alta).
- Kloonaa ja cd tähän repositoryynE.g.,
git clone [email protected]:imazen/imageflow.git && cd imageflow
)
Jos käytät bash
millä tahansa alustalla, sinun pitäisi pystyä käyttämään build.sh
-
./build.sh clean
– puhdistamaan -
./build.sh test
– suorittamaan kaikki testit -
./build.sh debug
– tuottamaan hitaat debug-binäärit -
./build.sh release
– tuottamaan julkaisubinäärit -
./build.sh install
– asentamaan julkaisubinäärit/usr/local
:een (täytyy ajaa `./build.sh release ensin) -
./build.sh uninstall
– poista release-binäärit
build.sh
sijoittaa binäärit ./artifacts/ directory
Jos olet Windows-käyttöjärjestelmässä, suorita build-komennot vain win_enter_env.bat
luodussa ikkunassa.
Voit myös rakentaa käyttämällä suoraan cargo
, vaikka tämä sijoittaa binäärit sen sijaan ./target/release
:ään.* cargo test --all
testataksesi Imageflow’ta debug (hidas) -tilassa* cargo build --package imageflow_abi --release
kääntääksesi libimageflow/imageflow.dll
* cargo build --package imageflow_tool --release
kääntääksesi imageflow_tool(.exe)
* cargo build --package imageflow_server --release
kääntääksesi imageflow_server(.exe)
* cargo build --all --release
kääntääksesi kaiken julkaisutilassa* cargo doc --no-deps --all --release
luodaksesi dokumentaatiota.
Rakentaminen lähdekoodista Dockerin avulla
Jos haluat kopioida Imageflow CI-ympäristön:
- Asenna Docker
- Käynnistä bash-istunnosta (Docker + Windows WSL, macOS tai linux)
-
git clone [email protected]:imazen/imageflow.gitcd imageflow./build_via_docker.sh debug
Tällöin luodaan käytetylle Docker-ikamalle ominaista välimuistia ~/.docker_imageflow_caches
. Instansseista tulee ephemeral; ainoa tila on kätköissä.
Viralliset Dockerfilet ovat myös hyvä paikka saada yksityiskohtaisempia ympäristön asennusvaiheita, sillä emme listaa vaiheita asetusten määrittämiseen:
- Valgrind (yleiset versiot rikkovat openssl:n; saatat joutua rakentamaan lähdekoodista)
- Koodin kattavuus
- Sidonnat.
Linux-edellytykset
(testattu Ubuntu 16.04 ja 18.04.)
#Install Rust 1.41+ by running`curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable`#Ensure build tools are installed (git, curl, wget, gcc, g++, nasm, pkg-config, openssl, ca-certificates)`sudo apt-get install git wget curl build-essential pkg-config libssl-dev libpng-dev nasm `
Mac OS Edellytykset
- Asenna XCode-komentorivityökalut, jos et ole vielä
- Asenna Homebrew, jos et ole vielä.
- Asenna nasm, pkg-config ja wget
brew install nasm pkg-config wget
- Asenna Rust
Windows WSL (Ubuntu Bionic Subsystem) Edellytykset
- Asenna Ubuntu 18.04 Windows Storesta
- Käynnistä Ubuntu 18.04 ja luo käyttäjätunnus/salasana
-
sudo apt-get update
päivittääksesi käytettävissä olevat paketit. - Asenna Rust 1.28+ ajamalla
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable
- Varmista, että rakennustyökalut on asennettu (git, curl, wget, gcc, g++, nasm, pkg-config, openssl, ca-certificates)
sudo apt-get install git wget curl build-essential pkg-config libssl-dev libpng-dev nasm
- (valinnainen) Käyttääksesi graafista tekstinkäsittelyohjelmaa sinun on ladattava imageflow ”Windows”-hakemistoon ja mapattava se sitten Ubuntussa olevaan paikkaan.Jos esimerkiksi kloonasit imageflow’n hakemistoon Documents/imageflow, suoritat seuraavasti:
ln -s /mnt/c/Users//Documents/imageflow ~/win_imageflow
- Sulje ja avaa Ubuntu uudelleen
Windows 10 Edellytykset
- Asenna Visual Studio 2017 Build Tools (erikseen tai VS-komponenttina)
- Asenna Git 64-bittinen.
-
Run As Administrator
NASM 64-bittinen asennusohjelma – se ei kysy. - Asenna Rust 64-bittinen, jos haluat 64-bittisen Imageflow’n, tai Rust 32-bittinen, jos et halua.Asenna työkaluketju
stable
oletuksena ja vahvista sen lisääminenPATH
. - Avaa komentorivi ja siirry tämän arkiston juurihakemistoon
- Muokkaa
ci/wintools/SETUP_PATH.bat
varmistaaksesi, että rust/cargo, nasm, git ja Git/mingw64/bin ovat kaikki%PATH%
:ssä. - Ajoita
win_enter_env.bat
aloittaaksesi ali-kuoren (muokkaamalla sitä, jos tahdot 32-bittisen rakentamisen) - Kaikki rakentamiskäskyt on ajettava ali-kuoressa. Suorita
cmd.exe /c "ci\wintools\win_verify_tools.bat"
tarkistaaksesi, että työkalut ovat mukana.
Miten oppii kuvankäsittelyä webiä varten?
Lue ensin High Performance Images for context.
Asiasta ei ole paljon hyviä oppikirjoja. Tässä muutamia henkilökohtaisesta kirjahyllystäni. Niiden (ja Wikipedian) avulla sain koottua noin 60 % tarvitsemastani tiedosta; loput löysin lukemalla monien suosittujen kuvankäsittelykirjastojen lähdekoodia.
Aloittaisin lukemalla Principles of Digital Image Processing: Core Algorithms edestä taaksepäin, sitten Digital Image Warping. Wikipedia on myös hyödyllinen hakuteos, vaikka asiaankuuluvia sivuja ei ole linkitetty tai luokiteltu yhteen – käytä erityisiä hakusanoja, kuten ”bilinear interpolation” ja ”Lab color space”.
- Digital Image Warping
- Computer Graphics: Principles and Practice in C (2nd Edition)
- Principles of Digital Image Processing: Fundamental Techniques
- Principles of Digital Image Processing: Core Algorithms
- Principles of Digital Image Processing: Advanced Methods
Olen huomannut, että OpenCV:n, LibGD:n, FreeImagen, Libvipsin, Pixmanin, Cairon, ImageMagickin, stb_imagen, Skian ja FrameWaven lähdekoodit ovat erittäin hyödyllisiä reaalimaailman toteutusten ja näkökohtien ymmärtämiseksi. Useimmissa oppikirjoissa oletetaan ääretön taso, jätetään huomiotta off-by-one-virheet, liukulukurajoitukset, väriavaruuden tarkkuus ja toiminnallinen symmetria rajatulla alueella. En voi suositella mitään oppikirjaa tarkaksi viitteeksi, ainoastaan käsitteelliseksi lähtökohdaksi. Tein joitakin muistiinpanoja asioista, jotka on syytä ottaa huomioon, kun luodaan kuvakirjastoa.
Muista myös, että tietokonenäkö on hyvin erilaista kuin kuvien luominen. Tietokonenäössä esimerkiksi resampling-tarkkuudella on hyvin vähän merkitystä. Mutta kuvien luomisessa tarjoat kuvia valokuvaajille, ihmisille, joilla on paljon tarkempi visuaalinen havaintokyky kuin keskivertokehittäjällä. Tuotetut kuvat renderöidään rinnakkain muiden CSS:ien ja kuvien kanssa, ja pienikin epätarkkuus on varsin näkyvää. Kilpailet Lightroomin kanssa; offline-työkalujen kanssa, jotka tuottavat visuaalisesti täydellisiä tuloksia. Loppukäyttäjäohjelmisto hylätään, jos valokuvaajat kokevat, että se turmelee heidän työnsä.