- optimális képek hihetetlen sebességgel
- Kezdje az imageflow_tool (ajánlott)
- Imageflow_server használata dinamikus képalkotáshoz
- A demón túl
- Példák
- A libimageflow használata a nyelvedből
- A projektben található ládák
- Ismert hibák és hiányzó funkciók (2020 májusától)
- Hibák
- Hiányzó funkciók
- Késleltetett funkciók
- Building from Source with Docker
- Linux előfeltételek
- Mac OS előfeltételek
- Windows WSL (Ubuntu Bionic Subsystem) Előfeltételek
- Windows 10 előfeltételek
- Hogyan lehet megtanulni a webes képfeldolgozást?
optimális képek hihetetlen sebességgel
license:
- Az imageflow_tool egy parancssori eszköz kísérletezéshez, kötegelt munkák futtatásához,vagy amikor a folyamatok elkülönítésére van szükség. Akár 17x gyorsabb, mint az ImageMagick. Kisebb fájlokat is készít jobb minőségben.
- Az imageflow_server képes JSON munkák futtatására vagy a képek menet közbeni manipulálására (pl.
/bucket/img.jpg?w=200
) aHTML-ből való közvetlen felhasználáshoz. A forrásképek lehetnek blob tárolóban, egy másik szerveren vagy a fájlrendszerben. Termelési célú felhasználásra azonban az Imageflow.NET Server használatát javasoljuk, amely sokkal több funkcióval rendelkezik, és a biztonság érdekében nem igényel elöl fordított proxyt. - A libimageflow a programozási nyelvből történő közvetlen (folyamat közbeni) használatra szolgál. Lásd a Node kötéseinket, Go kötéseinket, Scala kötéseinket, Elixir kötéseinket vagy .NET kötéseinket. Ha még nincsenek kötéseink az Ön nyelvéhez, fontolja meg, hogy egy napot áldoz arra, hogy hozzáadja őket. Az Imageflow rendelkezik egy simpleC-kompatibilis ABI-vel, amelyből mindössze 4 metódusra van szükség a kötések megvalósításához.
Open an issue to have us write example code for your use case. Hiszünk a visszajelzésvezérelt tervezésben, és a valós használat egyszerűsítése a leggyorsabb út a nagyszerű termékhez.
Querystring API dokumentáció
JSON API dokumentáció
libimageflow, imageflow_tool és imageflow_server önálló bináris programcsomagok Windows, Ubuntu és Mac rendszerekre. Linuxhoz Docker-képeket is kínálunk (ahol glibc és OpenSSL szükséges).
Köszönjük a Kickstarteren támogatóknak és az ImageResizer számos támogatójának, hogy megvalósíthatták ezt a projektet.Látogasson el az ImageResizing.net oldalra, ha kereskedelmi felhasználáshoz AGPLv3 kivételre van szüksége.
Kezdje az imageflow_tool (ajánlott)
imageflow_tool examples --generate
– létrehoz egy példák könyvtárat JSON munkákkal és hívószkriptekkel.
Az ImageResizer 4 lekérdezőszövegeivel kompatibilis parancssorokat használhatja:
imageflow_tool v1/querystring --in source.jpg --out thumb.jpg --command "width=50&height=50&mode=crop&format=jpg"
Vagy küldjön egy JSON munkafájlt. A JSON munkáknak több bemenete és kimenete lehet, és bármilyen műveleti gráfot ábrázolhatnak.
A következőkben egy kép több méretét generáljuk egy példafeladatfájlból:
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
Az imageflow_tool alapértelmezés szerint JSON választ ír ki az stdoutra. Ezt a --response
-vel írja ki a lemezre.
--debug-package
létrehoz egy .zip fájlt, hogy reprodukálja a problémás viselkedést mind a v1/build
, mind a v1/querystring
esetén. Kérjük, küldj hibajelentéseket; igyekszünk megkönnyíteni a dolgodat.
Imageflow_server használata dinamikus képalkotáshoz
imageflow_server start --demo
Most már HTML-ből is szerkeszthetsz képeket… és fejfájás nélkül használhatod az srcset.
<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" />
A demón túl
A különböző képforráshelyeket előtagokhoz akarsz majd csatolni. A --mount
parancs egy kettősponttal (:
) határolt argumentumlistát elemez. Az első az URL-ben használni kívánt előtag (például http://localhost:39876/prefix/
. A második a motor neve. A többi argumentumot elküldi a motornak.
Példák
--mount "/img/:ir4_local:C:\inetpub\wwwroot\images"
-
--mount "/proxyimg/:ir4_http:https:://myotherserver.com/imagefolder/"
(vegye figyelembe a kettőspont kettős szedését) --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"
A libimageflow használata a nyelvedből
- .NET Standard kötések a https://github.com/imazen/imageflow-dotnet
- Node kötések elérhetőek a https://github.com/imazen/imageflow-node
- Ruby – Basic kötések a bindings/ruby/
- C és C++ interfész stabil – használja a bindings/headers/imageflow_default.h-t vagy az egyes kiadásokhoz mellékelt számos alternatív konvenció egyikét.
- Rust – Az Imageflow Rust nyelven íródott, így használhatod a
imageflow_core
crate-et. - más nyelvek – Használj egy FFI kötésgeneráló eszközt a nyelvedhez, és tápláld azzal a fejlécfájllal, amelyik a legjobban tetszik neki.
Azt is megtalálhatod, hogy a imageflow_tool
elég gyors az igényeidhez.
A projektben található ládák
- imageflow_abi – A libimageflow/imageflow.dll stabil API-ja.A libimageflow fejléceit a
bindings/headers
- imageflow_tool – A parancssori eszköz
- imageflow_server – A HTTP szerver
- c_components – A C forrást tartalmazó rozsdás crate
- c_components/tests – A C komponensek tesztjei
- imageflow_types – A legtöbb crate által használt közös típusok, JSON szerializációval
- imageflow_helpers – Közös segédfüggvények és segédprogramok
- imageflow_riapi – RIAPI és ImageResizer4 kompatibilitás elemzése/elrendezése
- imageflow_core – RIAPI és ImageResizer4 kompatibilitás elemzése/elrendezés
- imageflow_core – A fő könyvtár és végrehajtási motor
Ismert hibák és hiányzó funkciók (2020 májusától)
Hibák
- imageflow_server még nem teszi közzé a JSON API-t.
- Még nincs fuzz tesztelés vagy harmadik fél általi auditálás.
Hiányzó funkciók
- Blurring.
Késleltetett funkciók
- Job cost prediction (delayed – no interest from community)
Az Imageflow lefordításához nem csak Rustra lesz szükséged, mivel van néhány C függősége.
- Telepítsd a platform-specifikus előfeltételeket (lentebb megtalálod a megfelelő részt).
- Klónozd és cd-zd be ezt a repositoryt Pl,
git clone [email protected]:imazen/imageflow.git && cd imageflow
)
Ha a bash
bármelyik platformon használja, a build.sh
-
./build.sh clean
– a tisztításhoz -
./build.sh test
– az összes teszt futtatásához -
./build.sh debug
– lassú hibakereső binárisok generálásához -
./build.sh release
– kiadási binárisok generálásához -
./build.sh install
– kiadási binárisok telepítéséhez a/usr/local
(futtatni kell a `./build.sh release először) -
./build.sh uninstall
– uninstall release binárisok
build.sh
elhelyezi a binárisokat a ./artifacts/ directory
Ha Windowson vagyunk, csak a win_enter_env.bat
által létrehozott ablakban futtassuk a build parancsokat.
Az cargo
közvetlen használatával is építhet, bár ez a binárisokat a ./target/release
-be helyezi helyette.* cargo test --all
az Imageflow teszteléséhez debug (lassú) módban* cargo build --package imageflow_abi --release
a libimageflow/imageflow.dll
lefordításához* cargo build --package imageflow_tool --release
a imageflow_tool(.exe)
lefordításához* cargo build --package imageflow_server --release
a imageflow_server(.exe)
lefordításához* cargo build --all --release
minden lefordításához release módban* cargo doc --no-deps --all --release
a dokumentáció létrehozásához.
Building from Source with Docker
Ha az Imageflow CI környezetét szeretné megismételni:
- Install Docker
- Futtatás bash munkamenetből (Docker + Windows WSL, macOS vagy linux)
-
git clone [email protected]:imazen/imageflow.gitcd imageflow./build_via_docker.sh debug
Ez a használt docker image-re jellemző ~/.docker_imageflow_caches
cache-eket hoz létre a ~/.docker_imageflow_caches
-ben. A példányok efemerek lesznek; az egyetlen állapot a gyorsítótárakban lesz.
A hivatalos Dockerfiles is remek hely a részletesebb környezet beállítási lépésekhez, mivel nem soroljuk fel a beállítási lépéseket:
- Valgrind (a gyakori verziók megtörik az openssl-t; lehet, hogy forrásból kell építeni)
- Code coverage
- Bindings.
Linux előfeltételek
(tesztelve Ubuntu 16.04 és 18.04 rendszereken.)
#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 előfeltételek
- Telepítse az XCode parancssori eszközöket, ha még nem tette meg
- Telepítse a Homebrew-t, ha még nem tette meg.
- Telepítse a nasm, pkg-config és wget
brew install nasm pkg-config wget
- Telepítse a Rustot
Windows WSL (Ubuntu Bionic Subsystem) Előfeltételek
- Telepítse az Ubuntu 18.04 a Windows Store-ból
- Futtassa az Ubuntu 18.04-et és hozza létre a felhasználónevét/jelszavát
-
sudo apt-get update
az elérhető csomagok frissítéséhez. - Telepítse a Rust 1.28+ futtatásával
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable
- Győződjön meg róla, hogy a build eszközök telepítve vannak (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
- (opcionális) A grafikus szövegszerkesztő használatához le kell töltenie az imageflow-t egy “Windows” könyvtárba, majd le kell képeznie az Ubuntu egyik helyére.Ha például az imageflow-t a Documents/imageflow könyvtárba klónozta, akkor a következőket kell futtatnia:
ln -s /mnt/c/Users//Documents/imageflow ~/win_imageflow
- Zárja be és nyissa meg újra az Ubuntut
Windows 10 előfeltételek
- Telepítse a Visual Studio 2017 Build Tools-t (külön vagy VS komponensként)
- Telepítse a Git 64-bites.
-
Run As Administrator
a NASM 64-bites telepítőjét – nem fog kérni. - Telepítse a Rust 64-bites, ha 64-bites Imageflow-t szeretne, vagy a Rust 32-bites, ha nem.Telepítse a
stable
toolchaint alapértelmezettként, és erősítse meg aPATH
hozzáadását. - Nyissa meg a parancssort, és váltson át ennek a tárolónak a gyökérkönyvtárába
- Szerkessze a
ci/wintools/SETUP_PATH.bat
-t, hogy a rust/cargo, nasm, git és Git/mingw64/bin mind a%PATH%
-ban legyen. - Futtassa a
win_enter_env.bat
-t egy al-palást indításához (szerkessze, ha 32 bites buildet szeretne) - Minden build parancsot az al-palástban kell futtatni. Futtassa a
cmd.exe /c "ci\wintools\win_verify_tools.bat"
-t, hogy ellenőrizze az eszközök meglétét.
Hogyan lehet megtanulni a webes képfeldolgozást?
Először is olvassa el a Nagy teljesítményű képek kontextusát.
Nem sok jó tankönyv van a témában. Íme néhány a személyes könyvespolcomról. Ezek (és a Wikipédia) között a szükséges tudás körülbelül 60%-át tudtam összerakni; a többit számos népszerű képfeldolgozó könyvtár forráskódjának elolvasásával találtam meg.
Azzal kezdeném, hogy elolvasom a Principles of Digital Image Processing: Core Algorithms front-to-back, majd Digital Image Warping. A Wikipedia is hasznos referencia, bár a vonatkozó oldalak nincsenek összekapcsolva vagy kategorizálva – használjon konkrét keresőkifejezéseket, például “bilineáris interpoláció” és “Lab színtér”.
- Digital Image Warping
- Computer Graphics: Principles and Practice in C (2nd Edition)
- Principles of Digital Image Processing: Alapvető technikák
- Principles of Digital Image Processing: A digitális képfeldolgozás alapjai: Alapvető algoritmusok
- Principles of Digital Image Processing: Advanced Methods
Az OpenCV, LibGD, FreeImage, Libvips, Pixman, Cairo, ImageMagick, stb_image, Skia és FrameWave forráskódját nagyon hasznosnak találtam a valós megvalósítások és szempontok megértéséhez. A legtöbb tankönyv végtelen síkot feltételez, figyelmen kívül hagyja az off-by-one hibákat, a lebegőpontos korlátokat, a színtér pontosságát és a határolt területen belüli működési szimmetriát. Egyetlen tankönyvet sem tudok pontos referenciaként ajánlani, csak mint fogalmi kiindulópontot. Készítettem néhány jegyzetet a képalkotó könyvtár létrehozásakor figyelembe veendő kérdésekkel kapcsolatban.
Azt is tartsa szem előtt, hogy a számítógépes látás nagyon különbözik a képalkotástól. A számítógépes látásban például az újramintavételezés pontossága nagyon keveset számít. De a képalkotásnál a képeket fotósoknak szolgáltatod ki, olyan embereknek, akiknek sokkal élesebb a vizuális érzékelésük, mint egy átlagos fejlesztőnek. Az előállított képeket más CSS-sel és képekkel egymás mellé renderelik, és a legkisebb jelentős pontatlanság is jól látható. Ön a Lightroommal versenyez; olyan offline eszközökkel, amelyek vizuálisan tökéletes eredményeket produkálnak. A végfelhasználói szoftvereket eldobják, ha a fotósok úgy érzik, hogy elrontja a munkájukat.