Command Line

Linux parancssor. Ismert és kevésbé ismert parancsok. Bash tippek, trükkök. Rövid scriptek.

Címkék

&& (1) A4 (1) ac3 (1) ack (1) acpi (2) AES (1) afzcamCreator (1) agrep (1) aha (1) ajánló (1) alias (2) alkönyvtár (4) android (1) animgif (2) apropos (1) audio (2) avi (6) awk (1) backup (5) badblocks (1) basename (3) bash (20) bash completion (1) battery (1) bc (1) blkid (1) boot (3) brew (1) brute force (1) bug (1) bzip2 (2) cab (1) cal (1) calibre (4) calibredb (1) camera (1) capability (1) cat (2) cd (4) cdialog (2) checkinstall (2) cikkajánló (2) ciklus (1) címke (2) cksum (1) clipboard (1) cmdtools (1) color (1) colordiff (1) column (1) commandlinefu (1) convert (8) corel aftershot pro (1) cp (1) cr (1) crop (1) csplit (1) curl (1) date (1) dátum (1) dd (8) ddrescue (1) deb (1) decimális (1) default value (1) defrag (1) df (1) dia (1) dialog (2) diff (6) digitális fénykép (14) dircolors (1) dirty cow (1) dlna (1) dmidecode (1) dng (2) dos (2) dos2unix (1) dropbear (1) dropbox (1) dt3 (1) du (3) dump (2) dv (1) dvd (10) dvdauthor (2) dvd rw tools (1) e2freefrag (1) e2fsprogs (4) ebook (2) editor (2) eh (1) eject (1) emacs (4) encfs (2) energiagazdálkodás (1) enfuse (2) Enigma (1) epub (2) ESC (1) espeak (1) exa (1) exe (1) exif (6) exiftool (12) exit (1) ext2 (1) ext3 (1) ext4 (1) f3 (1) fájl (1) fallocate (1) fdisk (3) fdupes (1) feh (2) felhő (1) felirat (1) ffmpeg (12) filefrag (1) find (6) for (3) format (1) fortune (1) fred weinhaus (1) fuck (1) fuse (4) fuse-lgefs (1) fzf (1) gdatafs (1) genisoimage (3) getcap (1) getfacl (1) getmail (1) ghostscript (1) gif (1) gifsicle (1) glances (1) gnumeric (1) gnuplot (1) gömb (1) google (1) google drive (1) gotty (1) GPAC (1) gparted (2) gpg (3) gpg-zip (1) gplaycli (1) gps (3) gpsbabel (1) graphviz (1) grep (3) grive (1) grive2 (1) groff (1) growisofs (1) gs (1) gtk (1) gunzip (1) gzip (2) h264 (2) hálózat (1) handbrake (1) hangosítás (1) hardver (1) hard link (1) hash (2) hashcat (1) haszontalan (1) hdd (5) head (1) helyettesítés (1) hexadecimális (2) hibernate (1) homebrew (2) hp (1) hp-levels (1) html (1) http (1) hugin (1) icewm (1) icewm-light (1) identify (1) if (1) ifconfig (2) ifs (1) igo (1) imagemagick (12) imap (1) index (1) install (1) installer (1) iotop (1) iperf (1) iso (3) java (2) jelszó (6) jhead (1) jnettop (2) jogosultság (1) jpeg (4) jpg (2) jre (1) kapcsos zárójel (1) karakterkódolás (1) kdenlive (1) képméretezés (1) képnézegető (1) kernel (1) kétmenetes (1) keystore (1) keytool (1) kiegészítés (1) kindle (1) kódolás (1) könyv (1) kriptográfia (1) k x (2) lbzip2 (1) less (5) Levenshtein (1) lf (1) lg (1) linux (2) linuxbrew (1) linuxvilág (1) lm sensors (1) ln (1) log (1) losetup (1) ls (4) lsof (1) LS COLORS (1) lzw (1) mac (1) macos (2) mac address (2) mad (1) mail (1) mailbox (1) man (2) markdown (1) matroska (4) md5 (1) md5sum (2) mediainfo (1) melt (1) mencoder (5) merevlemez (5) meta (1) mikmod (1) minidlna (1) mjpegtools (1) mkv (6) mkvmerge (3) mkvtoolnix (4) mlt (1) mms (1) mogrify (1) monitor (1) montage (1) mount (3) mp3 (2) mp4 (1) MP4Box (1) mpg123 (1) mpg321 (1) mplayer (6) mplex (1) named (1) naptár (1) ncurses (2) nethogs (1) ng (1) nice (1) niceload (1) nl (1) nosztalgia (1) ntfsresize (1) nyomtató (1) od (2) ogg (1) oktális (1) openssh (1) openwrt (1) óra (1) panoráma (1) parallel (3) parancsbehelyettesítés (1) parted (1) pass (1) paste (1) patch (2) pbcopy (1) pbpaste (1) pbzip2 (3) pdf (8) pdfcrack (1) pdfjam (1) pdfnup (1) pdftk (2) pendrive (2) pentax (6) perl (1) pgp (1) pgrep (1) PhotoRec (1) pi (1) picasa (1) picasaweb (1) pid (1) pigz (1) pipe (7) pktriggercord (1) play store (1) pm-utils (1) pop3 (1) popd (2) port (1) process (4) pushd (2) pv (3) pwgen (1) python (1) qimport (1) qpd (1) qr (2) qrencode (2) quotedprintable (1) random (1) randr (1) rdfind (1) readlink (1) recode (2) regiókód (1) reguláris kifejezés (2) rejtjelezés (2) renice (1) rfkill (1) rip (1) rm (1) rpm (5) rsa (1) rsync (2) sane (1) scanimage (1) screenshot (1) script (1) sebesség (1) sed (2) seq (4) setcap (1) setfacl (1) sha256sum (1) sha512sum (1) shellshock (1) shred (2) SIGINT (1) smp (3) sorszámozás (1) sort (2) sourse-highlight (1) space (1) sparse (1) split (2) ssconvert (2) ssd (1) ssh (3) sshfs (1) sshtron (1) startx (1) stat (1) stopper (1) suspend (1) symlink (1) sync (1) sysrq (1) systemd-analyze (1) systems (1) számológép (1) szenzor (1) szerver (1) szimbolikus link (1) szimbolikus lunk (1) szín (1) szkennelés (1) tail (2) tar (3) tee (3) text (2) thefuck (1) tiff (1) time (1) timeout (1) tinta (1) titkosítás (3) tömörítés (4) top (2) töredezettségmentesítés (1) touch (2) tput (1) tr (1) transcode (5) trap (1) TRE (1) tree (2) tutorial (1) ufraw (2) ufraw batch (1) újság (1) unbuffer (1) uniq (1) unix (2) upower (1) urandom (1) user (1) utf 8 (1) változó (2) VBoxManage (1) véletlenszám (2) verem (1) vertical video syndrome (1) VHS (1) vi (4) vid.stab (1) video (2) vim (1) virtualbox (1) vob (1) vobcopy (1) wake on lan (1) watch (1) webkamera (1) webszerver (2) wget (1) which (2) whitespace (2) who (1) wifi (1) windows (3) woeusb (1) wol (1) X (1) x264 (1) xargs (4) xbacklight (1) xclip (2) Xdialog (1) xml (1) xmllint (1) xrandr (2) xxd (3) yes (1) youtube (1) youtube-dl (1) zárójeles (1) zbar (1) zene (1) zenity (2) zip (1) Címkefelhő

patch készítése

2012.02.27. 10:00 | sala | Szólj hozzá!

A már említett diff parancs segítségével egy programon elvégzett módosításainkból patcheket készíthetünk. A következő példa szándékosan leegyszerűsített, de egy valódi programhoz készített patchet mutat be.

A Pentax K-x gép által készített DNG fájl 4352x2868 pixel, de a kép jobb szélen több oszlopnyi fekete pixel található. Ha exiftool segítségével belenézünk a DNG fájlba, azt is látjuk, hogy default cropnak 4288x2848-as méret van beállítva a 10,10 koordinátájú pixeltől kezdve. A raw konverterek eléggé eltérően kezelik ezt a furcsaságot, a már korábban említett ufraw program egyszerűen levágja a kép jobb szélét és 4309x2868 méretű jpeg fájlokat gyárt. Ez elég furcsa méret, ehelyett én jobban szeretem, ha pont 3:2 arányú az oldal, ezért 4272x2848-as méretet szeretnék. Ehhez alul és felül 10-10 pixelt,  balra 18, jobbra 62 pixelt szeretnék levágni ( a jobb oldali 44 pixel fekete miatt nem szimmetrikus a vágás).

Ha belenézünk ufraw forrásába, akkor dcraw.cc fájlban találjuk a következő részt, ami meghatározza a vágás méretét:

  if (!strcmp(model,"K-r") || !strcmp(model,"K-x"))
    {                   width  = 4309; filters = 0x16161616; }

Ezt kell módosítani erre:

  if (!strcmp(model,"K-r") || !strcmp(model,"K-x"))
    { left_margin = 18; height = 2848; top_margin = 10; width  = 4272; filters = 0x16161616; }
 

Egy ilyen egyszerű esetben még csak-csak el lehet magyarázni, hogy mit kell átírni, de ha több fájlt módosítunk több helyen, akkor ez követhetetlen. Ehelyett érdemes egy alkönyvtárban ( a példában: ufraw-0.18) a program eredeti változatát, egy másik alkönyvtárban ( a példában: ufraw-0.18_modified) a program módosított változatát eltárolni, és patchet készíteni:

diff -uNr ufraw-0.18 ufraw-0.18_modified > ufraw_kx.patch

Figyeljünk arra oda, hogy a két alkönyvtár a módosításunkat leszámítva egyforma legyen! Ne felejtsünk ott például tesztfájlokat! A parancs hatására a következő fájlt kapjuk:

diff -uNr ufraw-0.18/dcraw.cc ufraw-0.18_modified/dcraw.cc
--- ufraw-0.18/dcraw.cc 2011-02-20 08:56:15.000000000 +0100
+++ ufraw-0.18_modified/dcraw.cc        2012-02-26 10:39:23.452480315 +0100
@@ -7104,7 +7104,7 @@
   if (height == 3136 && width == 4864)  /* Pentax K20D and Samsung GX20 */
     { height  = 3124;   width  = 4688; filters = 0x16161616; }
   if (!strcmp(model,"K-r") || !strcmp(model,"K-x"))
-    {                  width  = 4309; filters = 0x16161616; }
+    { left_margin = 18; height = 2848; top_margin = 10; width  = 4272; filters = 0x16161616; }
   if (!strcmp(model,"K-5"))
     { left_margin = 10; width  = 4950; filters = 0x16161616; }
   if (!strcmp(model,"K-7"))

Ez a fájl írja le a módosításainkat olyan formában, amit a patch parancs megért. Ha elküldjük a patchet valakinek akinél az eredeti ufraw-0.18 alkönyvtár van, a következő módon tudja frissíteni a programot:

$ patch -p0 < ufraw_kx.patch
patching file ufraw-0.18/dcraw.cc

A módszer akkor is hasznos ha saját magunknak akarjuk eltárolni a módosításokat, de különösen akkor hasznos, ha egy nyílt forráskódú program fejlesztésében akarunk segíteni.

Címkék: patch pentax diff digitális fénykép

A bejegyzés trackback címe:

https://commandline.blog.hu/api/trackback/id/tr954208434

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.