2012-01-27 16 views
6

szukam prostego narzędzia wiersza polecenia (w systemie Linux), aby wstawić fragment tekstu (np autorskich) do pliku png, w wyniku nowego pliku PNGWłóż kawałek tekstu do obrazu PNG

> png-insert-text-chunk "here's my text chunk" <in.png> out.png 

Uwaga: przez "wstaw fragment tekstu" nie mam na myśli "narysuj tekstu na obrazie". Mam na myśli: wstaw tekst do pliku PNG jako fragment, w technical sense. Może to być wykorzystane na przykład do wstawienia komunikatu o prawach autorskich, który nie jest wyświetlany na rzeczywistym obrazie.

+0

Następnym razem spróbuj przesłać podobne pytania do unix.stackexchange.com, ponieważ nie jest to związane z programowaniem. –

+0

@mr nie widzę, jak to pytanie jest mniej związane z programowaniem niż, powiedzmy, [ten jeden] (http://stackoverflow.com/questions/115818/which-format-for-small-website-images-gif -lub-png) lub [ten jeden] (http://stackoverflow.com/questions/182875/free-tool-to-create-edit-png-images). Co jeśli chciałbym napisać skrypt CGI w bashie, który wstawia fragmenty tekstu do zbioru obrazów i do tego potrzebowałbym powyższego polecenia? Brzmi dla mnie jak program. – gcbenison

+0

Specjalnie poprosił o narzędzie wiersza poleceń w systemie Linux. Właśnie pomyślałem, że wskażę, że istnieje unix.stackexchange.com. –

Odpowiedz

14

Szukałem w pobliżu narzędzia, aby to zrobić, i jeszcze nie znalazłem niczego, co naprawdę pasuje do tego, co chcę zrobić. Tak więc zdecydowałem się na build my own, który okazuje się nie jest zbyt trudny. Narzędzie png-text-dump wyświetla wszystkie fragmenty tekstu w obrazie PNG. To zależy tylko od libpng. Narzędzie png-text-append wstawia kawałki tekstu do obrazu PNG. To zależy tylko od standardowej biblioteki C - początkowo próbowałem to zaimplementować za pomocą biblioteki libpng, ale w rzeczywistości łatwiej było pracować od zera przy użyciu tylko specyfikacji PNG.

+0

Dzięki za wykonanie tej pracy! Próbuję osadzić własne metadane w PNG i zobaczyłem, że tEXt chuncks były sposobem, ale nie widziałem żadnych narzędzi, które by to wspierały. Będę używał waszego narzędzia! – stephenmm

+0

fwiw, 'pnginfo' z pakietu' pngtools' ma możliwość _display_ fragmentów tekstu w pliku png. Oczywiście nie to samo, co dodawanie własnych (dzięki za kod!), Ale czasami przydatne w przypadku szybkich rzeczy. – arcticmac

+0

Myślę, że w linii 79 png-text-append powinno być: char name [5] = {'\ 0'}; // 4 znaki i jeden znak null Zobacz http://stackoverflow.com/questions/15577124/strange-character-after-an-array-of-charlings – Adam

1

wierzę, że pngcrush ma tę zdolność: http://pwet.fr/man/linux/commandes/pngcrush

+0

Spojrzałem trochę w pngcrush i może to zrobić; moim jedynym problemem jest to, że nie mogę zmusić go do opuszczenia innych kawałków w spokoju. Nie udało mi się też go po prostu wydrukować zawartości fragmentów tekstowych istniejących w pliku png. – gcbenison

0

dodanie do komentarza wykonane przez @ Susam-pal, aby zmienić kolor należy wybrać opcję

-Wypełnijkolor

ten opcja akceptuje nazwę koloru, kolor szesnastkowy lub numeryczną specyfikację RGB, RGBA, HSL, HSLA, CMYK lub CMYKA. Zobacz Nazwy kolorów, aby dowiedzieć się, jak poprawnie określić argument koloru.

Należy dołączyć specyfikację kolorów w cudzysłowach, aby zapobiec interpretowaniu "#" lub nawiasów przez powłokę. Przykładowo

-Wypełnij niebieski

-Wypełnij "#ddddff"

-Wypełnij "RGB (255,255,255)"


Otrzymany z link

7

Zastosowanie ImageMagick na convert i opcja -set:

convert IN.png \ 
     -set 'Copyright' 'CC-BY-SA 4.0' \ 
     -set 'Title' 'A wonderful day' \ 
     -set comment 'Photo taken while running' \ 
     OUT.png 

Opcja -set służy do ustawiania elementów metadanych. W przypadku PNG często przechodzą one w części tEXt.

+1

Odwrotnie, do ** strip ** obraz _property_, użyj własności '+ set" ". – sphakka