JPG kitoltese fekete hatterrel

Fórumok

Imagemagick-ben gondolkodom...azaz konzolos Linux-os kepmanipulaloval kell elernem...

a problema az lenne, hogy  van egy tegyuk fel 1400x900-as JPG kepem, amit fel kellene nagyitani fullHD-be, DE UGY, hogy ha nem aranyos a nagyitas (azaz torzulna a kep), akkor fekete hatteret tegyen moge fullHD meretben. Ez egy otlet.

Tudtok erre valami megoldast?

Mukodnie kell barmilyen felbontasra, akar allo, akar fekvo a kep, a lenyeg az, hogy a vegleges output fullHD legyen. (sajna a kepmegjelnito csak ezt a felbontast tudja, es nem szeretnem, ha torzulna a kep)

 

kosz

Hozzászólások

Szerkesztve: 2024. 04. 23., k – 14:46

convert input.png -resize 1920x1080 -background black -compose Copy -gravity center -extent 1920x1080 output.jpg

4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.

"By default, the width and height given in a geometry argument are maximum values unless a percentage is specified. That is, the image is expanded or contracted to fit the specified width and height value while maintaining the aspect ratio (the ratio of its height to its width) of the image."

Szóval igen, a resize mögé adott geometry azt adja meg, amibe bele kell férnie a nagyított képnek.

Nem vagyok egy jpeg szakértő, de a tapasztalatom a következő, tablet-tel készített fotóknál: a tablet valójában csak egyféle orientációjú fotót készít, és a forgatást valamiféle EXIF marker-ben tárolja. Amikor egy ilyen képet pl. gthumb-mal megnézek a PC-n, akkor a megjelenítő forgatja a képet minden alkalommal külön. Én úgy tárolom el hosszabb időre a jpeg fotókat, hogy először az alábbit lefuttatom rajtuk:

jpegtran -optimize -copy none

Ez egy csomó szemetet kidob a képből, magát a kép kódolását is optimalizálja (veszteségmentesen), viszont azok az EXIF marker-ek is mennek a levesbe, amelyek a megjelenítéskori forgatásért felelősek. Tehát az így lecsupaszított jpeg file-ban magát a képadatot el kell még forgatni.

Azt a lépést pedig kétféleképpen lehet elvégezni: gthumb-ban a szögletes zárójelekkel lehet veszteségmentesen forgatni, vagy parancssorból pl.

jpegtran -rot 270 -trim

(A széleken lévő pixeleket nem mindig lehet veszteségmentesen forgatni (a kép méretétől függ); ilyen esetben a gthumb is megkérdezi, hogy torzítani akarod-e a képet, vagy levágni a szélét.)

Azt sajnos nem tudom, hogy parancssorból hogyan lehet könnyen kideríteni, hogy forgatásra szükség van-e, de elvileg a jpegtopnm parancsnak, amit a másik hozzászólásomban ajánlottam, eleve figyelembe kellene vennie a megfelelő (forgató) EXIF markereket, és a pnm byte stream-be már a helyesen orientált pixel adatoknak kellene kerülniük.

Szerkesztve: 2024. 04. 24., sze – 09:42
jpegtopnm -dct float original.jpg \
| pnmscale -xyfit 1920 1080 \
| pnmpad -width=1920 -height=1080 \
| pnmtojpeg -quality=80 -optimize -dct=float \
> new.jpg

Nem teszteltem, de ennek mennie kellene...

Szerk.: a megjelenítődtől függően a pnmpad parancsot akár ki is hagyhatod a pipeline-ból.