Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

TweakPNG achtig programma om gebruikte kleuren te vinden

Pagina: 1
Acties:

  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
Mijn collega's en ik zijn op zoek naar een alternatief voor TweakPNG wat we op het werk gebruiken.
Een van de dingen die we moeten doen is het controleren van PNG afbeeldingen die aan de nodige voorwaarden moeten voldoen, 2 daarvan zijn de volgende:
- achtergrond moet wit (255.255.255) transparant zijn;
- de 2e (en enigste andere!) kleur moet niet transparant zijn en moet een bepaalde RGB-waarde hebben die afhankelijk is van wat er in de PNG staat.

Nou kunnen we met TweakPNG daar wel op controleren, echter zijn er grapjassenbedrijven die PNG's aanleveren waar 256 kleuren zijn gedefinieerd in de PLTE (kleurenpallet) chunk, dan zie je dus zoiets als dit:
Afbeeldingslocatie: http://www.alanayoub.com/wp-content/uploads/articles/taming_your_pngs/tweakPNG_tRNS_chunk.png
maar dan met meer, en vaak ook dubbele, kleuren.

Wat nou precies het probleem is is het volgende: TweakPNG kan niet aangeven welke kleuren alleen gedefinieerd zijn en welke daadwerkelijk in de afbeelding zijn gebruikt wat er voor zorgt dat we dus extra lang bezig zijn om de gebruikte kleuren te vinden.

Daarom zijn we op zoek naar een alternatief, maar mijn geGoogle (in 't Engels, voor meer resultaten) heeft tot zover niks opgeleverd.

Misschien dat hier iemand een suggestie heeft?

Raven

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • DeTeraarist
  • Registratie: November 2000
  • Laatst online: 20-11 17:47

DeTeraarist

#Boots2Asses

Wikipedia: pngcrush
Hiermee kun je niet gebruikte kleuren uit het palette halen.

Soms, als ik heel stil ben, kan ik de zon horen schijnen


  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
Dat vroeg ik niet....
Trouwens, misschien had ik er bij moeten zetten dat we de PNG's niet(!) mogen aanpassen ;), we moeten alleen vermelden wat er mis mee is en dan feedback geven aan de verzender die een goede versie moet terug sturen.

[ Voor 14% gewijzigd door Raven op 22-04-2010 07:41 ]

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
Anyone?

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • Slogra
  • Registratie: April 2004
  • Niet online
Ik denk dat DeTeraarist bedoeld dat PNGcrush alle niet-gebruikte kleuren verwijdert, en dan hou je een png met 2 kleuren (transparante kleur en de daadwerkelijk gebruikte kleur) over, wat je vervolgens kan analyseren met TweakPNG.
Als je het origele bestand niet mag aanpassen, dan schrijf je de PNGcrush output toch naar een tijdelijk bestandje...

  • Overlegne
  • Registratie: Februari 2010
  • Laatst online: 30-03 13:01

Overlegne

Calvé Pindabaas

PicPick? Weet niet of dat wat voor je is?
Laat maar, volgensmij heeft dat niets te maken met wat jij zoekt ;)
Sorry! begreep het niet helemaal goed 8)7

[ Voor 59% gewijzigd door Overlegne op 27-04-2010 16:04 ]


  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
Slogra schreef op dinsdag 27 april 2010 @ 16:00:
Ik denk dat DeTeraarist bedoeld dat PNGcrush alle niet-gebruikte kleuren verwijdert, en dan hou je een png met 2 kleuren (transparante kleur en de daadwerkelijk gebruikte kleur) over, wat je vervolgens kan analyseren met TweakPNG.
Als je het origele bestand niet mag aanpassen, dan schrijf je de PNGcrush output toch naar een tijdelijk bestandje...
Dat zou dan nog een optie zijn, maar het zou het beste zijn als we op een of andere manier in een oogopslag konden zien welke nu daadwerkelijk gebruikt zijn, dat we dus niet eerst de pics moeten "opschonen" zeg maar om daarna 't pas te kunnen zien.

Maker van TweakPNG heeft trouwens geantwoord. De pallet(kleurenindex)-viewer van TweakPNG kijkt alleen in de PLTE chunk, waar de kleurenindex in staat, maar kijkt/vergelijkt niet in/met de IDAT chunks waar de daadwerkelijk gebruikte kleuren in staan....
Overlegne schreef op dinsdag 27 april 2010 @ 16:03:
PicPick? Weet niet of dat wat voor je is?
Laat maar, volgensmij heeft dat niets te maken met wat jij zoekt ;)
Sorry! begreep het niet helemaal goed 8)7
Uhm, ik zie niet zo 123 of dat programma kan wat ik graag wil, maar kan morgen tussen de certificeringen door wel even kijken of 't iets is.

[ Voor 17% gewijzigd door Raven op 28-04-2010 18:27 ]

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02:44
Je kunt ImageMagick een histogram laten printen:
convert example.png -format %c histogram:info:-

Uitvoer is dan zoiets:
        30: (  0,102,204,255) #0066CC rgba(0,102,204,1)
         2: ( 29,119,210,255) #1D77D2 rgba(29,119,210,1)
         1: ( 45,129,214,255) #2D81D6 rgba(45,129,214,1)
         1: ( 51,133,214,255) #3385D6 rgba(51,133,214,1)
        10: (102,163,255,255) #66A3FF rgba(102,163,255,1)
         3: (127,178,229,255) #7FB2E5 rgba(127,178,229,1)
         5: (165,201,255,255) #A5C9FF rgba(165,201,255,1)
        10: (204,224,255,255) #CCE0FF rgba(204,224,255,1)
         5: (225,237,255,255) #E1EDFF rgba(225,237,255,1)
         1: (230,240,255,255) #E6F0FF rgba(230,240,255,1)
         9: (255,255,255,255) #FFFFFF white
         3: (255,255,255,  0) #FFFFFF00 rgba(255,255,255,0)

Daar kun je vrij duidelijk in zien hoeveel kleuren er gebruikt zijn en of ze de juiste RGBA waarden hebben, lijkt me? (De eerste kolom is dus het aantal pixels, daarna de gebruikte kleur in een aantal verschillende formaten om een of andere reden.)

[ Voor 6% gewijzigd door Soultaker op 28-04-2010 18:38 ]


  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
ImageMagick lijkt te doen wat we graag willen :D
We gaan 'm nog even wat verder uitproberen vandaag, thanks voor de tip iig :)

Na alvast even kort getest te hebben: De gebruikte kleuren geeft ie weer, maar heeft ImageMagick ook een optie om (naast de gebruikte kleuren) ook de gedefinieerde (semi)transparante kleuren weer te geven? Er mag namelijk maar 1 transparante kleur zijn (die geeft ie wel weer omdat die gebruikt word), maar heb net een PNG door dat programma laten bekijken waar er meerdere (niet gebruikte) transparanten inzitten, die worden niet weergegeven dus moeten we alsnog de kleurenpallet met TweakPNG doorneuzen....

edit: nu maar eens kijken hoe ik ook alweer een batch kan aanmaken die met variabelen werkt en een voor een de bestandsnamen van PNG's, die in 1 map staan, hier in zet "convert example.png -format %c histogram:info:-" daar "convert *.png -format %c histogram:info:-" niet werkt (*.png not found....)

edit2: Weet het al weer :)
code:
1
2
3
4
5
6
7
@ECHO OFF
for /F %%a in ('dir /b *.png') do (
set FileName=%%~na.png
"C:\Program Files\ImageMagick-6.6.1-Q16\convert.exe" %%a -format %c histogram:info:- > output.txt
)

pause

Werkt alleen niet :?
7* (zelfde aantal als PNG's in map batchfile) deze error:
convert.exe: option requires an argument '-format' @ error/convert.c/ConvertImageCommand/1503.
+ een lege output.txt....

edit3:
code:
1
2
3
4
5
@ECHO OFF
for /F %%a in ('dir /b *.png') do (
set FileName=%%~na.png
"C:\Program Files\ImageMagick-6.6.1-Q16\convert.exe" %%a -format %%c histogram:info:- > %%a.txt
)
Werkt :)
Nu maar even voor elk plaatje een aparte txt laten maken daar de output.txt telkens overschreven werd....

edit4: Nu staat alle output, incl filename, in 1 txt:
code:
1
2
3
4
5
6
7
@ECHO OFF
for /F %%a in ('dir /b *.png') do (
set FileName=%%~na.png
ECHO %%a
ECHO %%a >> output.txt
"C:\Program Files\ImageMagick-6.6.1-Q16\convert.exe" %%a -format %%c histogram:info:- >> output.txt
)
:)

Blijft over, de overige (semi)transparante kleuren die gevonden moeten worden (indien gedefinieerd in kleurenpallet).

[ Voor 56% gewijzigd door Raven op 29-04-2010 15:02 ]

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
Zo, weer iets verder :)

Een batchfile die pngcheck.exe, convert.exe (van de door Soultaker aangeraden ImageMagick :D ) en sfk.exe (Swiss File Knife, what's in a name :P ) gebruikt om de gebruikte kleuren én de zowel gebruikte als alleen gedefinieerde transparanten bij elkaar zoekt en in een txt gooit.

sfk.exe is om de output van pngcheck.exe te doorzoeken en alleen dat wat we willen weten erbij pakt. Dit omdat pngcheck de volledige inhoud van de kleurenpallet en daaronder van alles een tweede lijst maakt incl transparantiewaarde. Dat resulteert (indien 256 kleuren gedefinieerd) in een zo lange output dat ik Swiss File Knife er maar bij heb gepakt om eruit te vissen wat ik (en mijn collega's) wil weten.

Het resultaat?:
code:
1
2
3
4
5
6
7
8
9
10
11
12
@ECHO OFF
for /F %%a in ('dir /b data\*.png') do (
set FileName=%%~na.png
ECHO %%a
ECHO %%a >> output.txt
pngcheck -p data\%%a >resultaat_pngcheck.txt
convert.exe data\%%a -format %%c histogram:info:- >> output.txt
sfk.exe grep resultaat_pngcheck.txt "0 = 0x00">> output.txt
ECHO. >> output.txt
ECHO. >> output.txt
)
del resultaat_pngcheck.txt


Even 3 willekeurige png's geplaatst in mapje data:
resultaat_pngcheck.txt -> http://pastebin.com/45iAYb7i
output.txt -> http://pastebin.com/1CHEw1C9

De uiteindelijke output is dus:
code:
1
2
3
4
bestandsnaam
gebruikte kleuren

transparante kleuren


Nu alleen nog uitvissen hoe ik het beste de semi-transparanten (kleuren met transparantie waarden van 1 tot 254) door de sfk krijg gevonden. Dat wordt een extra lading zoektermen toevoegen denk ik, maar dat is voor later. Dit is al heel wat voor nu *O*

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
En ook dat laatste is opgelost lijkt het :D

Txt-tje gemaakt met alle (semi)transparante waardes:
code:
1
2
3
4
5
6
7
8
9
10
0 = 0x00
1 = 0x01
2 = 0x02
3 = 0x03
etc
etc
251 = 0xFB
252 = 0xFC
253 = 0xFD
254 = 0xFE


Daarna
code:
1
sfk.exe grep resultaat_pngcheck.txt "0 = 0x00">> output.txt
vervangen door:
code:
1
2
3
for /F "tokens=*" %%b in (hex.txt) do ( 
sfk156.exe grep resultaat_pngcheck.txt "%%b" >> output.txt
)


Zo op het eerste gezicht werkt dat goed :D

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
De batchfile is ondertussen bijgewerkt tot:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@ECHO OFF
TITLE PNG Controle
type nul > output.txt
type nul > resultaat_pngcheck.txt
for /F %%a in ('dir /b data\*.png') do (
set FileName=%%~na.png
ECHO %%a
pngcheck -p data\%%a >resultaat_pngcheck.txt
sfk.exe grep resultaat_pngcheck.txt interlaced >> output.txt
sfk.exe replace -quiet -yes output.txt "/OK: data\//" > NUL
convert.exe data\%%a -format %%c histogram:info:- >> output.txt
for /F "tokens=*" %%b in (transparantie_waardes.txt) do ( 
sfk.exe grep resultaat_pngcheck.txt "%%b" >> output.txt
)
ECHO. >> output.txt
ECHO. >> output.txt
)
del resultaat_pngcheck.txt
start notepad output.txt
EXIT


Alleen loopt ie vast op bestanden met spaties in de bestandsnaam...
Voor zover ik daarover iets kon terugvinden moet ik hier iets in veranderen:
code:
1
for /F %%a in ('dir /b data\*.png') do (

Maar wat :?
Heb al op verschillende plekken "-tjes eromheen proberen te zetten, maar dat helpt niet.
Of is het iets dat zo simpel is dat ik het niet zie :P

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Topicstarter
Voor wie het wil weten, het spatieprobleem is opgelost.
"delims=" in het (1e) For lusje zetten bleek de oplossing, daarnaast moesten er nog wel quootjes om de verschillende data\%%a's heen omdat de batch anders alsnog vastliep op spaties.

Dit lijkt trouwens een mooie final versie. Niet alleen de gebruikte kleuren en (semi)transparanten worden nu weergegeven, maar ook of een afbeelding (non-)interlaced is en ook de aanwezige chunks. M.a.w., alles wat we moeten controleren (en niets meer) wordt bij elkaar gegooid in een txt-tje :) .

Zo ziet het er nu uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@ECHO OFF
TITLE PNG Controle
type nul > output.txt
type nul > pngcheck1.txt
type nul > pngcheck2.txt
for /F "delims=" %%a in ('dir /b data\*.png') do (
set FileName=%%~na.png
ECHO %%a
ECHO %%a >> output.txt
pngcheck -v "data\%%a" > pngcheck1.txt
sfk.exe replace -quiet -yes pngcheck1.txt "/    //" > NUL
sfk.exe grep pngcheck1.txt offset > pngcheck2.txt
sfk.exe replace -quiet -yes pngcheck2.txt "/  chunk //" > NUL
sfk.exe grep pngcheck1.txt interlaced >> output.txt
ECHO. >> output.txt
sort < pngcheck2.txt >> output.txt
ECHO. >> output.txt
convert.exe "data\%%a" -format %%c histogram:info:- >> output.txt
pngcheck -p "data\%%a" > pngcheck1.txt
for /F "tokens=*" %%b in (hex.txt) do ( 
sfk.exe grep pngcheck1.txt "%%b" >> output.txt
)
ECHO. >> output.txt
ECHO ----------------------------------------------------------------- >> output.txt
ECHO. >> output.txt
)
start notepad output.txt


Als dit goedgekeurd wordt (moet uiteraard getest worden op betrouwbaarheid ;) ) is dit een mooie aanwinst. :)
Alleen wil die convert.exe niet standalone werken, ImageMagick moet geïnstalleerd zijn anders werkt ie niet. :/
Hopelijk vind ik daar nog een oplossing voor.

Maar heb nu iig blije collega's :)

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde

Pagina: 1