This file is indexed.

/usr/share/doc/png-definitive-guide/html/chapter04.html is in png-definitive-guide 20060430-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   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
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Applications: Image Editors (PNG: The Definitive Guide)</TITLE>
<!-- META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">

<!-- http://www.w3.org/TR/REC-CSS2/box.html -->
<STYLE TYPE="text/css">
  P { margin-bottom: 0em }
  UL {
    margin-bottom: 0em;
    margin-top: 0em;
    list-style: disc;
  }
  LI {
    padding: 0px 0px 0px 0px;
    margin: 0px 0px 0px 0px;
  }
</STYLE>

<LINK REV="made" HREF="http://pobox.com/~newt/greg_contact.html">
<!--  Copyright (c) 1999 O'Reilly and Associates.  -->
<!--  Copyright (c) 2002-2006 Greg Roelofs.  -->
</HEAD>

<body bgcolor="#ffffff" text="#000000">


<hr> <!-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->

<a href="chapter03.html"><img width=24 height=13 border=0 align="left"
 src="images/prev.png" alt="&lt;-"></a>

<a href="chapter05.html"><img width=24 height=13 border=0 align="right"
 src="images/next.png" alt="-&gt;"></a>

<div align="center">
  <a href="chapter03.html"><font size="-1" color="#000000"
   ><b>PREVIOUS</b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a
     href="toc.html"><font size="-1" color="#000000"
   ><b>CONTENTS</b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a
     href="chapter05.html"><font size="-1" color="#000000"
   ><b>NEXT</b></font></a>
</div>

<hr> <!-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->


<h1 class="chapter">Chapter 4. Applications: Image Editors</h1>

<div class="htmltoc"><h4 class="tochead">Contents:</h4>

<p>
<a href="#png.ch04.div.1">4.1. Photoshop 5</a><br />
<a href="#png.ch04.div.2">4.2. Photoshop 4</a><br />
<a href="#png.ch04.div.3">4.3. ImageReady</a><br />
<a href="#png.ch04.div.4">4.4. Paint Shop Pro</a><br />
<a href="#png.ch04.div.5">4.5. The GIMP</a><br />
<a href="#png.ch04.div.6">4.6. Other Image Editors</a><br />
</p></div>


<p><a name="INDEX-298" />To create a PNG image from scratch, one needs an image editor that understands
PNGs. But there are many levels of understanding, and only a handful of editors
exercise PNG's most interesting features. Here is a list of the support
one would like to see in the ideal image editor:</p>

<ul>
   <li><p>Basic image types: RGB, grayscale, and palette-based</p></li>
   <li><p>Images with fewer than 256 colors automatically saved as palette-based
       (or grayscale, if appropriate)</p></li>
   <li><p>Option to quantize and dither images with many colors down to 256 or
       fewer</p></li>
   <li><p>Simple transparency with any basic image type (i.e., single color
       marked as fully transparent)</p></li>
   <li><p>Full alpha transparency (also known as <em class="emphasis">alpha
       channel</em> or <em class="emphasis">alpha mask</em>)</p></li>
   <li><p>``Cheap'' RGBA-palette transparency (i.e., where each palette entry
       has red, green, blue, and alpha components)</p></li>
   <li><p>Option to quantize and dither full RGBA images down to RGBA-palette
       images</p></li>
   <li><p>Option to enable interlacing</p></li>
   <li><p>Gamma correction, including calibration of display system</p></li>
   <li><p>Color correction: either chromaticity, sRGB, or full ICC
       profiles</p></li>
   <li><p>Ability to read, modify, and write 16-bit grayscale or 48-bit RGB
       images without conversion to lower bit depth</p></li>
   <li><p>Reasonable default compression settings: adaptive filtering turned on
       for all image types except palette-based; ``medium'' <em
       class="emphasis">zlib</em> compression level (say, between 3 and
       7); unused palette entries omitted; if simple/cheap transparency,
       palette ordered so that opaque transparency entries can be
       omitted</p></li>
   <li><p>Options for both fast saves and best (slowest) compression</p></li>
   <li><p>Ability to preserve and store user-defined text information</p></li>
</ul>

<p>Not every feature is vital, of course, and some users may want only a subset
of these. But particularly when it comes to web design, one would like full
support for gamma correction and for PNG's various transparency capabilities,
preferably with an option for best (or at least good) compression. On the
other hand, when it comes to compression, one does
<em class="emphasis">not</em> want to be
overwhelmed with the minutiae of PNG's many compression parameters,
particularly when PNG-specific optimization products exist (one of which
will be covered in <a href="chapter05.html">Chapter 5, "Applications: Image
Converters"</a>).</p>


<p>In this chapter, I look at five of the most popular image-editing applications
in detail, explaining how to invoke PNG-specific features and pointing out the
limitations of each product. Because PNG's transparency options are among
its most promising web-related capabilities, and because I wish to provide a
concrete demonstration of the similarities and differences between the various
editing programs, I will return to the sample editing task of <a href="chapter01.html">Chapter 1, "An Introduction to PNG"</a>,
<em class="emphasis">An Introduction to PNG</em>--namely, the step-by-step procedure for creating
a soft ``portrait-style'' transparency mask in an existing image. At the end
of the chapter, I list a couple of dozen other editors with PNG support.</p>


<div class="sect1"><a name="png.ch04.div.1" />
<h2 class="sect1">4.1. Photoshop 5</h2>


<p><a name="INDEX-299" />
<a name="INDEX-300" />Photoshop 5.0.2, available for Macintosh and 32-bit Windows, is the latest
version of Adobe's flagship image editor, as of this writing. It supports
colormapped, grayscale, and RGB PNGs at sample
depths of 8 bits, and images optionally can be saved as interlaced.
Alpha transparency is supported in grayscale and truecolor images, but there
appears to be no way to add any sort of transparency to a palette-based image.
Gamma and color correction are also supported, with one caveat; I'll come
back to that shortly.
</p>


<p>Photoshop 5 is modal, which is to say that images of a given type (e.g., RGB)
remain of that type until explicitly converted to something else--a process
that must occur <em class="emphasis">before</em> one attempts to save the image. For example, to
convert an RGB or grayscale image to palette-based, follow this prescription:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">Image</b> &#8594; <b class="emphasis-bold">Mode</b> &#8594; <b class="emphasis-bold">Indexed Color</b>, which pops up
a dialog box.</p></li>
   <li><p>Choose an appropriate <b class="emphasis-bold">Palette</b> type (typically <b class="emphasis-bold">Adaptive</b>).
<?x-need 10?></p></li>
   <li><p>Set the number of colors, either via the <b class="emphasis-bold">Color Depth</b> selector or by
entering the number explicitly in the <b class="emphasis-bold">Colors</b> entry field.</p></li>
   <li><p>Select a dithering method: <b class="emphasis-bold">None</b>, <b class="emphasis-bold">Pattern</b>, or <b class="emphasis-bold">Diffusion</b>.</p></li>
   <li><p>Choose <b class="emphasis-bold">Faster</b> or <b class="emphasis-bold">Better</b> color matching, and optionally check
the <b class="emphasis-bold">Preserve Exact Colors</b> box (disabled if no dithering).</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button.</p></li>
</ol>

<p>The Color Depth selector rather disingenuously indicates bits per pixel,
but it is actually nothing more than a shortcut for specifying a power-of-two
number of colors--that is, 3 bits/pixel is 8 colors, 4 bits/pixel is 16,
and so on. All settings result in 8-bit-per-pixel PNG files.</p>


<p><a name="INDEX-301" />
<a name="INDEX-302" />Note also that the Pattern dither type is known as <em class="emphasis">ordered dithering</em>
in other contexts, while the Diffusion choice corresponds to Floyd-Steinberg
or something similar. The latter generally looks much better, since human
eyeballs are very good at noticing the regular patterns of an ordered dither.</p>


<p>Photoshop 5 includes a wizard for creating transparent images, but we'll
step through the procedure manually. The key is not to rely on background
transparency but instead to add a new layer representing alpha transparency.
More specifically, given an image with or without background transparency, do
the following to add an alpha channel to it:
<a name="INDEX-303" />
<a name="INDEX-304" /></p>


<ol>
   <li>

<p>In the <b class="emphasis-bold">Channels</b> palette, click on the arrow at the upper
right and select <b class="emphasis-bold">New Channel...</b>, which pops up a dialog box.</p></li>
   <li><p>In the <b class="emphasis-bold">Name:</b> entry field, give the new channel a name (for example,
<em class="emphasis">Alpha</em>) and click the <b class="emphasis-bold">OK</b> button; the other fields can be left
with their default values.</p></li>
   <li><p>In the <b class="emphasis-bold">Channels</b> palette again, return to the original RGB or grayscale
channel.</p></li>
   <li><p>Click on the <b class="emphasis-bold">Lasso</b> tool (left side of tool palette, second from top).</p></li>
   <li><p>In the <b class="emphasis-bold">Lasso Options</b> tab of the tool palette, set the <b class="emphasis-bold">Feather</b>
radius to some value, perhaps 13.</p></li>
   <li><p>Draw a loop around the face of the subject.</p></li>
   <li><p>Do <em class="emphasis">not</em> invert the Lasso selection; instead go back to the
<b class="emphasis-bold">Channels</b> palette and select the alpha channel (the lassoed loop will
still be visible on the blank channel).</p></li>
   <li><p>Erase everything outside the loop via <b class="emphasis-bold">Edit</b> &#8594; <b class="emphasis-bold">Clear</b>.</p></li>
   <li><p>Once again, return to the original RGB or grayscale channel via the
<b class="emphasis-bold">Channels</b> palette, and optionally click on the visibility box of the
alpha channel to show its effects overlaid on the main image.</p></li>
</ol>

<p>The preceding Lasso-related operations differ from those in every
other image editor that I investigated, including Adobe's own
ImageReady 1.0.  Specifically, the requirement <em class="emphasis">not</em> to invert the
selection in order
<?x-need 10?>to erase the outer part of the alpha channel seemed counterintuitive.<a href="#FOOTNOTE-25">[25]</a>
</p><blockquote class="footnote">


<a name="FOOTNOTE-25" />

<p>[25] It should be noted, however, that I am by no means an expert with any
of the image editors described here! It is entirely possible that
there are settings or alternative approaches that conform more closely
to the ``standard'' Lasso procedure used in the other programs.</p>


</blockquote>


<p>Having added an appropriate alpha channel to the image, it may now be saved
as a 16-bit gray+alpha or 32-bit RGBA PNG:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Save a Copy...</b>, which pops up the usual file dialog
box.
</p></li>
   <li><p>Pick an appropriate directory and filename for the image, choose PNG as the
format, and make certain the Exclude Alpha Channels checkbox is
<em class="emphasis">not</em> checked.</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button, which triggers yet another dialog box.</p></li>
   <li><p>Optionally create an interlaced PNG by selecting <b class="emphasis-bold">Adam7</b> as the interlacing
type, and make sure the filter type is <b class="emphasis-bold">Adaptive</b> for grayscale or
truecolor images.</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button.</p></li>
</ol>

<p>If transparency is only desired as an aid in creating the image, not as part
of the actual file data, check the <b class="emphasis-bold">Flatten Image</b> box in the Save dialog
box.</p>


<p><a name="INDEX-305" />
<a name="INDEX-306" />Adobe made significant improvements to the overall handling of gamma and
color correction in Photoshop 5, with explicit support for the new sRGB
color space (see <a href="chapter10.html">Chapter 10, "Gamma Correction and Precision Color"</a>) and
a number of other standard color spaces, as well. Photoshop 5 also includes an option
to enable Monitor Compensation (which requires that the monitor be specified
correctly first), and it always saves gamma and color-correction information
with PNG images.</p>


<p><a name="INDEX-307" />
<a name="INDEX-308" />Unfortunately, the gamma information PS5 saves in PNG images is wrong; it
is always too small by a factor of two, resulting in images that display
much too darkly. This is a significant problem, because it appears <em class="emphasis">only</em>
to affect PNG images. In other words, one cannot simply make the appropriate
compensation in Photoshop's RGB setup panel and forget about it; either PNG
images will be written incorrectly, or all other image types will be read and
written incorrectly. The only workaround within Photoshop 5 is to misadjust
the display gamma setting just before saving a PNG image and to reset it
just after saving. For example, in a typical Windows PC (or other sRGB
display system) with a gamma value of 2.2, temporarily 
<?x-need 10?>change the value
to 1.1 in Photoshop's RGB Setup box (shown in 
<a href="#png.ch04.fig.1">Figure 4-1</a>):</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594;
       <b class="emphasis-bold">Color Settings</b> &#8594;
       <b class="emphasis-bold">RGB Setup...</b></p></li>
   <li><p>Halve the <b class="emphasis-bold">Gamma:</b> value (i.e., if it
       was 2.2, change it to 1.1).</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button.</p></li>
</ol>

<a name="png.ch04.fig.1" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <img width=502 height=273 border=0
       src="figs/png.0401.edit2.png" alt="Figure 4-1" /><br>
      <br>
      <b>Figure 4-1:</b>  <i>Photoshop 5 RGB Setup window.</i>

    </td>
  </tr>
</table>
</p>
</div>

<p>Then save the file in PNG format as before, but when finished, be sure to
change the value back! Clearly, this is a crude and painful workaround.</p>


<p>An alternative, available at least to DOS, Windows, and Unix users, is
to use a third-party utility to change the gamma values in all of the
PNG files after they're saved. One such utility is <em class="emphasis">pngcrush</em>,
which I'll discuss in some detail in <a href="chapter05.html">Chapter 5, "Applications: Image Converters"</a>. For a system with a
gamma value of 2.2, which should correspond to a PNG file gamma of
0.454545 (or 1/2.2), the following command will replace the incorrect
gamma information and write the fixed PNGs into a directory called
<em class="emphasis">fixed/</em>:</p>


<blockquote><pre class="code">pngcrush -d fixed -replace_gamma 0.454545 foo.png foo2.png ...</pre></blockquote>


<p>Newer versions of pngcrush support a simpler approach, tailor-made for
Photoshop 5:</p>


<blockquote><pre class="code">pngcrush -d fixed -double_gamma foo.png foo2.png ...</pre></blockquote>


<p>In addition to writing incorrect information in PNG files, Photoshop 5
appears to ignore any existing color space information when reading PNG
files. Although one could, in principle, read the PNG gamma and chromaticity
information and set up a custom RGB profile that matches it, this would have
to be done manually and requires significant effort and knowledge on the
part of the user. In other words, only the most dedicated experts are
likely to be able to accomplish it, or even to bother with it in the first
place.
</p>


<p><a name="INDEX-309" />
<a name="INDEX-310" />Photoshop 5 has several other quirks, as well. As I mentioned earlier,
palette-based images are always saved with 8-bit pixels and 256 palette
entries, regardless of how few colors are actually used; for a bicolor image,
this can result in a bloat factor of eight or more, compared to a properly
optimized image. Adobe's rationale seems to be that this sort of optimization
should be handled in a web-specific application like ImageReady. But leaving
aside the fact that ImageReady 1.0 has similar problems, one would expect a
high-end editing application like Photoshop (with its high-end price tag) to
do much better.</p>


<p><a name="INDEX-311" />Photoshop's PNG-related user options are overly technical and can also
result in files that are larger than necessary. For example, for most users
a simple Interlaced checkbox would suffice; there is no need to know that
PNG's interlacing method is formally known as Adam7. Similarly, the ability
to specify individual compression filters is nice from a theoretical
standpoint, but 99% of users are not going to waste their time experimenting
with the six choices Photoshop allows. Most will instead stick with the
default value, which is often None (but sometimes Adaptive) and is
rarely correct for the given image type. As a rule of thumb, palette-based
images should always use None, and grayscale and truecolor images should
always use Adaptive. There are very rare cases in which another choice will
be better, but they are difficult to predict, and the difference in file size
will usually be minimal anyway. In fact, Photoshop should probably offer only
these two options in the first place. Oddly enough, Photoshop offers the user
no control at all over the compression engine itself, even though this is much
easier to understand conceptually and has a more predictable impact on the
file size. Photoshop's hardwired compression setting seems to correspond to
level 6 in most other implementations.</p>


<a name="INDEX-311.01-new" />
<p>Photoshop 4 had little or no support for 16-bit-per-sample images; this,
together with improved color management, was one of the major new features
in version 5. Unfortunately, due to a programming oversight, 16-bit support
was not extended to include PNG. On import, 16-bit PNG images are converted
to 8-bit samples, and on export, PNG is not offered as an option for 16-bit
images. Adobe has indicated that this will be addressed in the next major
release.</p>


<p>
<a name="INDEX-312" />
<a name="INDEX-313" />
<a name="INDEX-314" />
Photoshop also lacks support for embedded PNG text annotations, despite
allowing the user to enter an extensive set via the <b class="emphasis-bold">File</b> &#8594;
<b class="emphasis-bold">File Info...</b> dialog box; these can only be saved to an external file.
This is particularly surprising given the presence of checkboxes allowing
one to Mark as Copyrighted (in the File Info dialog box, shown in
<a href="#png.ch04.fig.2">Figure 4-2</a>) and Exclude Non-Image Data (in the Save dialog box).
The former option has to do with digital watermarking and the copyright
symbol in Photoshop's titlebar. As to the latter option, text data is <em class="emphasis">always</em>
excluded from the file.
</p>


<a name="png.ch04.fig.2" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <img width=502 height=368 border=0
       src="figs/png.0402.edit2.png" alt="Figure 4-2" /><br>
      <br>
      <b>Figure 4-2:</b>  <i>Photoshop 5 File Info window.</i>

    </td>
  </tr>
</table>
</p>
</div>

<p><a name="INDEX-315" />
<a name="INDEX-316" />
<a name="INDEX-317" />
Most critically, Photoshop has absolutely no support for transparency in
colormapped PNG images. When an RGBA or gray+alpha image has been converted
to indexed mode, only the non-alpha data is affected; that is, Photoshop
still indicates two channels, one for the indexed color data and one for
the (unchanged) alpha channel. Attempting to save such an image is an
exercise in frustration, however: in the Save As dialog, PNG is grayed out
even though GIF is allowed (and indeed, a GIF saved in this way will have
binary transparency corresponding approximately to the alpha channel). In
the Save a Copy dialog, PNG is allowed, but the Exclude Alpha Channels box
is both checked and grayed out.</p>


<p>Overall, it is evident that Adobe's attention was devoted more to enhancing
generic editing features than to providing comprehensive support (or, in some
cases, even basic support) for the three-year-old PNG format. In fact, PNG
support seems almost to have been an afterthought, even in version 5.0. This
may be reasonable from a business perspective, but it is nevertheless
disappointing, given that PNG's capabilities map so closely into Photoshop's.</p>


<p>Further information about Photoshop is available from Adobe's web pages at
<a href="http://www.adobe.com/prodindex/photoshop/">http://www.adobe.com/prodindex/photoshop/</a>.
<a name="INDEX-318" />
<a name="INDEX-319" />
</p>
</div>

















</div>
<div class="sect1"><a name="png.ch04.div.2" />
<h2 class="sect1">4.2. Photoshop 4</h2>





<p><a name="INDEX-320" />
<a name="INDEX-321" /></p>


<p>Photoshop 4 is still in wide use and has a slightly different feature
set from version 5, so we'll look at it in some detail, too. It supports
the same basic PNG feature set the newer version does: colormapped,
grayscale, RGB, and RGBA PNGs at sample depths of 8 bits or less, optionally
interlaced, with no palette transparency or text support. Like PS5,
it too has a gamma-related quirk, though not as severe. I'll discuss it 
in a moment.</p>


<p>
<a name="INDEX-322" />
Photoshop 4's support for PNG alpha channels is sufficiently well
hidden that Jordan Mendelson set up a web page describing the
step-by-step procedure for creating one,
<a href="http://jordy.wserv.com/experiments/png.html">http://jordy.wserv.com/experiments/png.html</a>. The approach is
very similar to that in Photoshop 5, with the exception of the steps
needed to actually modify the alpha channel for a portrait-style mask:</p>


<ol>
   <li><p>In the <b class="emphasis-bold">Channels</b> palette, click on the arrow at the upper
right and select <b class="emphasis-bold">New Channel...</b>, which pops up a dialog box.</p></li>
   <li><p>In the <b class="emphasis-bold">Name:</b> entry field, give the new channel a name (for example,
<em class="emphasis">Alpha</em>) and click the <b class="emphasis-bold">OK</b> button; the other fields affect only
how the alpha channel is displayed, not the actual image data, and can be
left with their default values.
























</p></li>
   <li><p>In the <b class="emphasis-bold">Channels</b> palette again, leave the alpha channel as the selected
one, but make the original RGB or grayscale channel visible by clicking on
the small box to its left (an eyeball icon will appear in the box). The main
image will now be visible under a 50% red ``haze'' that represents the alpha
channel, assuming the default options in the previous step's dialog box were
left unchanged.</p></li>
   <li><p>Double-click on the <b class="emphasis-bold">Lasso</b> tool (left side of tool palette, second from top).</p></li>
   <li><p>In the <b class="emphasis-bold">Lasso Options</b> tab of the tool palette, set the <b class="emphasis-bold">Feather</b>
radius to some value, perhaps 13.</p></li>
   <li><p>Draw a loop around the face of the subject, but do <em class="emphasis">not</em> invert the
selection.</p></li>
   <li><p>Erase everything outside the loop via <b class="emphasis-bold">Edit</b> &#8594; <b class="emphasis-bold">Clear</b>; a soft-edged
hole will appear in the red overlay, indicating that everything but the
face of the subject is masked out.</p></li>
</ol>

<p>Once the alpha channel is created, the whole image may be saved as a 16-bit
gray+alpha or 32-bit RGBA PNG just as in Photoshop 5:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Save a Copy...</b>, which pops up the usual file dialog
box.
</p></li>
   <li><p>Pick an appropriate directory and filename for the image, choose PNG as the
format, and make certain the <b class="emphasis-bold">Don't include alpha channels</b> checkbox is
<em class="emphasis">not</em> checked.</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button, which triggers yet another dialog box.</p></li>
   <li><p>Optionally create an interlaced PNG by selecting <b class="emphasis-bold">Adam7</b> as the interlacing
type, and make sure the filter type is <b class="emphasis-bold">Adaptive</b> for grayscale or
truecolor images.</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button.</p></li>
</ol>

<p>If transparency is desired only as an aid in creating the image, not as
part of the actual file data, go to the Layer menu and select <b class="emphasis-bold">Flatten
Image</b> before saving.</p>


<p>
<a name="INDEX-323" />
<a name="INDEX-324" />
Gamma and color-correction information is always saved with PNG
images, but in order for it to be meaningful (that is, not wrong),
the monitor settings must be entered correctly in the Monitor Setup
box, accessed via <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Color Settings</b> &#8594; <b class="emphasis-bold">Monitor
Setup</b> (shown in 
<a href="#png.ch04.fig.3">Figure 4-3</a>). 
</p>


<a name="png.ch04.fig.3" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <img width=502 height=313 border=0
       src="figs/png.0403.edit2.png" alt="Figure 4-3" /><br>
      <br>
      <b>Figure 4-3:</b>  <i>Photoshop 4 Monitor Setup window.</i>

    </td>
  </tr>
</table>
</p>
</div>

<p>
The information can either be entered explicitly, by providing values
for the display system's ``gamma'' value, white point, and phosphor
types (see <a href="chapter10.html">Chapter 10, "Gamma Correction and Precision Color"</a> for a more detailed explanation of these terms),
or it can be done implicitly, by selecting a monitor type from a list
of calibrated models. The implicit approach may not work exactly as
intended, however; the default gamma value seems to be 1.8, whereas
almost all PC display systems are closer to 2.2. Either way, there is
one more setting, and this is where the caveat I mentioned earlier
comes in. For the Ambient Light setting, only the Medium value
will cause Photoshop to save correct gamma information in the PNG
file. The High setting will result in a PNG gamma value that is
too small by a factor of two,<a href="#FOOTNOTE-26">[26]</a>
while the Low setting results in a value that is 50% too large. Of
course, this is still preferable to the case with Photoshop 5.0; at
least Photoshop 4.0 has <em class="emphasis">one</em> setting that works correctly.</p><blockquote class="footnote">


<a name="FOOTNOTE-26" />

<p>[26] Adobe's definition of ``high'' ambient light appears to involve something on
the order of a spotlight shining in the user's face.</p>


</blockquote>


<a name="INDEX-324.01-new" />	<!-- PS4 text annotations -->
<a name="INDEX-324.02-new" />	<!-- PS4 16-bit samples -->
<a name="INDEX-324.03-new" />	<!-- PS4 palette transparency -->
<a name="INDEX-324.04-new" />	<!-- PS4 compression -->
<p>In other respects, Photoshop 4 is no different from version 5. It lacks
support for text annotations, 16-bit samples, low-bit-depth samples and
palette transparency, and its compression settings and interface are
identical--that is, mediocre at best.


































































<a name="INDEX-325" />
<a name="INDEX-326" />
</p>


















</div>
<div class="sect1"><a name="png.ch04.div.3" />
<h2 class="sect1">4.3. ImageReady</h2>


<p><a name="INDEX-327" />
<a name="INDEX-328" />ImageReady is Adobe's Web-specific image editor for 32-bit Windows and
the PowerPC-based Macintosh. It provides a number of ways to optimize the size
and content of images and can be used either as a back end to Photoshop or
as a standalone product. Its capabilities and structure are quite similar
to those of Macromedia's Fireworks.</p>


<p>ImageReady 1.0 supports both 24-bit RGB PNGs and 8-bit palette-based PNGs,
which it refers to as ``PNG-24'' and ``PNG-8'' files, respectively. There is
no direct support for grayscale images, but it is possible to convert a color
<a name="INDEX-329" />image to what is basically grayscale (<b class="emphasis-bold">Image</b> &#8594; <b class="emphasis-bold">Adjust</b> &#8594;
<b class="emphasis-bold">Desaturate</b>) and save it as an 8-bit colormapped image with nothing but
shades of near-gray in the palette. Interlacing, simple transparency, and full
alpha transparency are supported, but the program appears not to allow
single-color transparency in RGB images, and its implementation of PNG's
RGBA-palette mode is almost useless. I'll take a closer look at that in
just a moment.</p>


<p><a name="INDEX-330" />The procedure for adding portrait-style transparency to an existing RGB image
is similar to that for Fireworks and Photoshop. As before, open the file and
use the Lasso tool to select the region of interest:
</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Open</b>.</p></li>
   <li><p>Click on the <b class="emphasis-bold">Lasso</b> tool (left side of tool palette, second from top).</p></li>
   <li><p>Draw a loop around the face of the subject.</p></li>
   <li><p>Invert the selection so that the part <em class="emphasis">outside</em> the loop gets erased
(<b class="emphasis-bold">Select</b> &#8594; <b class="emphasis-bold">Inverse</b>).</p></li>
   <li><p><b class="emphasis-bold">Select</b> &#8594; <b class="emphasis-bold">Feather...</b> and set the <b class="emphasis-bold">Feather Radius</b>
to some value, perhaps 13.</p></li>
   <li><p>Erase everything outside the loop via <b class="emphasis-bold">Edit</b> &#8594; <b class="emphasis-bold">Clear</b>.</p></li>
</ol>

<p>Note that, unlike Fireworks's feather radius, ImageReady's extends to
both sides of the lassoed path; that is, there will be partially
transparent pixels both inside and outside the selection. Thus, we drew
our loop a bit bigger here and set the feather radius to roughly half of
what it was in the Fireworks example.</p>


<p>Saving the newly cropped image as a 32-bit RGBA PNG is straightforward:</p>


<ol>
   <li><p>Open the <b class="emphasis-bold">Optimize</b> palette (subwindow), shown in 
<a href="#png.ch04.fig.4">Figure 4-4</a>, if it isn't already popped up
(<b class="emphasis-bold">Window</b> &#8594; <b class="emphasis-bold">Show Optimize</b>).</p></li>
   <li><p>Select <b class="emphasis-bold">PNG-24</b> from the pull-down list at the upper left.</p></li>
   <li><p>In the <b class="emphasis-bold">Matte:</b> pull-down list, select <b class="emphasis-bold">No Matte</b> (which will then display
in the box as ``None'').</p></li>
   <li><p>Check the <b class="emphasis-bold">Transparency</b> checkbox.</p></li>
   <li><p>Optionally check the <b class="emphasis-bold">Interlaced</b> checkbox to make an interlaced PNG.</p></li>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Save Optimized As...</b> and pick an appropriate
directory and filename.</p></li>
</ol>

<p>The PNG-24 Optimize palette is shown in 
<a href="#png.ch04.fig.4">Figure 4-4</a>. The Transparency
checkbox is rather misleading; leaving it unchecked indeed creates
a completely opaque image, but ImageReady nevertheless writes a full
32-bit RGBA file! That is, the alpha channel is still there, but it
is completely blank. One can only hope that this is an oversight and
that it will be corrected in the next release; such files can hardly
be considered ``optimized.''</p>


<p>
</p>


<a name="png.ch04.fig.4" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <img width=502 height=295 border=0
       src="figs/png.0404.edit2.png" alt="Figure 4-4" /><br>
      <br>
      <b>Figure 4-4:</b>  <i>ImageReady Optimize palette for 24-bit PNG, with
      Matte pull-down menu.</i>

    </td>
  </tr>
</table>
</p>
</div>

<p>Things get more interesting in the palette-based case. As before, the action
takes place in the Optimize palette, as shown in 
<a href="#png.ch04.fig.5">Figure 4-5</a>:</p>


<ol>
   <li><p>Select <b class="emphasis-bold">PNG-8</b> from the format pull-down list.</p></li>
   <li><p>Select an appropriate palette type from the pull-down list on the second line
(<b class="emphasis-bold">Perceptual</b> is the default).</p></li>
   <li><p>Select <b class="emphasis-bold">No Matte</b> from the <b class="emphasis-bold">Matte:</b> pull-down list.</p></li>
   <li><p>Set <b class="emphasis-bold">Colors:</b> to 256 or Auto.</p></li>
   <li><p>Set <b class="emphasis-bold">Levels:</b> to 1 (which will reduce the <b class="emphasis-bold">Colors:</b> setting to 255).</p></li>
   <li><p>Optionally check the <b class="emphasis-bold">Interlaced</b> checkbox.</p></li>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Save Optimized As...</b> and pick an appropriate
directory and filename.</p></li>
</ol>

<a name="png.ch04.fig.5" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <img width=502 height=167 border=0
       src="figs/png.0405.edit2.png" alt="Figure 4-5" /><br>
      <br>
      <b>Figure 4-5:</b>  <i>ImageReady Optimize palette for 8-bit
      (colormapped) PNG.</i>

    </td>
  </tr>
</table>
</p>
</div>

<p>Because the number of transparency levels was set to 1, this procedure will
create an image with binary transparency; there will be a sharp cutoff at
the lassoed boundary. (If the main image window is showing the Optimized
tab instead of Original, the effects of the Optimize palette will be displayed
in ``real time,'' more or less.) How about a nice RGBA-palette image? One
might imagine that between 4 and 16 transparency levels would suffice with
dithering turned on, but the Levels spin button actually indicates the number
of palette entries with transparency, not the number of transparency levels.
Thus, even 160 ``levels'' is insufficient in our portrait example. This is
largely due to ImageReady's strange optimization algorithm, which seems
to prefer dark colors for transparency.  
<a href="#png.ch04.fig.6">Figure 4-6</a> shows the result; note the speckled appearance of the letters on the right
side and the odd banding appearance (almost like an edge-detection algorithm)
on the left.
</p>


<a name="png.ch04.fig.6" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <img width=502 height=361 border=0
       src="figs/png.0406.edit2.png" alt="Figure 4-6" /><br>
      <br>
      <b>Figure 4-6:</b>  <i>ImageReady optimized preview with 160 transparent
      entries, showing artifacts.</i>

    </td>
  </tr>
</table>
</p>
</div>

<p>For this image, a levels setting between 220 and 230 worked best, at least
for transparency. The drawback is that this leaves only 26 to 36 colors for
the opaque regions. For facial tones, that is simply not enough--one loses
many of the saturated colors and most of the fine gradients and shading,
leaving skin tones flat and grainy. And on top of that, the transparent
regions show distinct banding, even with the large levels setting.
See
<a href="#png.ch04.fig.7">Figure 4-7</a> for an example with levels set at 224.
</p>


<a name="png.ch04.fig.7" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <img width=502 height=361 border=0
       src="figs/png.0407.edit2.png" alt="Figure 4-7" /><br>
      <br>
      <b>Figure 4-7:</b>  <i>ImageReady optimized preview with 224 transparent
      entries, showing degraded facial tones.</i>

    </td>
  </tr>
</table>
</p>
</div>

<p>Overall, ImageReady's PNG support is adequate, but it seems probable that
GIF and JPEG were considerably higher priorities. The PNG-24 mode is excellent
for images with full alpha channels, but the 33% size penalty incurred by
opaque RGB images (thanks to the extraneous alpha channel) is unlikely to
win friends in the web design crowd. PNG-8 is fine for opaque images with
more than 16 colors, but low-color images are always saved at 8 bits per
pixel, resulting in files that are too big by a factor of anywhere from two
to eight. PNG-8 images with transparency, in addition to suffering the
quantization problems noted previously, appear always to be saved with as many
transparency entries as palette entries, resulting in up to 255 wasted bytes
per image.</p>


<p><a name="INDEX-331" />
<a name="INDEX-332" />On the positive side, ImageReady supports interlacing with no trouble, and
it preserves existing Copyright text chunks while allowing authors to change
or add a new one. The procedure for adding one is simple:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Image Info...</b></p></li>
   <li><p>Fill in the <b class="emphasis-bold">Copyright:</b> field appropriately (e.g., ``Copyright 1999
O'Reilly and Associates. All rights reserved.'').</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button.</p></li>
</ol>

<p>The only other supported text keyword is Software, which ImageReady always
writes automatically (``Adobe ImageReady''); it replaces any previous Software
text chunk. All other text chunks are discarded, and there is no provision
for authors to add others.</p>


<p><a name="INDEX-333" />
<a name="INDEX-334" />What about gamma and color correction? At first glance, ImageReady appears
to support gamma, but this is mostly illusory. It does allow one to adjust the
image appearance with a gamma slider (<b class="emphasis-bold">Image</b> &#8594; <b class="emphasis-bold">Adjust</b> &#8594;
<b class="emphasis-bold">Gamma...</b>), but doing so modifies the pixels directly, and information
about the adjustment is not saved with the file. In other words, the same
image will look different on different systems. Nor is the effect remembered,
other than as part of ImageReady's Undo capability--changes to the gamma
setting become permanent as soon as the OK button is clicked. PNG files
that already have gamma chunks are treated the same as those without; the
gamma information is discarded.</p>


<p><a name="INDEX-335" />ImageReady's compression of PNG images is fair but by no means optimal. I
already noted that colormapped images with just a few palette entries are
saved at a higher bit depth than is necessary and that palette-based
transparency information is stored inefficiently. On top of that, though, pngcrush
(discussed in <a href="chapter05.html">Chapter 5, "Applications: Image Converters"</a>) was able to achieve compression improvements
of between 6% and 45% on 22 variations of my test image, averaging around
12% overall. The reasons for this are not immediately obvious, however;
ImageReady's compression settings seem reasonable, and it does use
dynamic filtering on truecolor images.</p>


<p>The ImageReady home page is at <a href="http://www.adobe.com/prodindex/imageready/">http://www.adobe.com/prodindex/imageready/</a>.
<a name="INDEX-336" />
<a name="INDEX-337" />
</p>


















</div>
<div class="sect1"><a name="png.ch04.div.4" />
<h2 class="sect1">4.4. Paint Shop Pro</h2>


<p><a name="INDEX-338" />
<a name="INDEX-339" />Jasc's Paint Shop Pro 5.0 is a capable and popular program for image
editing; it is also quite affordable. Version 5.0 supports only 32-bit
Windows, but version 3.12 is still available for Windows 3.x and NT 3.51
and also supports PNG. We'll only be looking at the newer release, however.</p>


<p>At the most basic level, PSP supports the three major PNG image types:
colormapped, grayscale, and RGB, both interlaced and noninterlaced. It
provides options for converting between types, but it does not do so
automatically; if a ``16-million-color'' image happens to use only 200
colors, it will still be saved as 24-bit RGB unless the user specifically
asks for conversion to a palette image. Both GIF-style transparency
(one completely transparent palette entry) and full 32-bit RGBA are
supported, but RGBA-palette mode is not.
</p>


<p><a name="INDEX-340" />Paint Shop Pro's interface for adding an alpha mask to an image is quite
elegant. First, open an ordinary RGB image, then pop up the <b class="emphasis-bold">Add Mask
From Image</b> dialog box, shown in 
<a href="#png.ch04.fig.8">Figure 4-8</a>:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Open</b>.</p></li>
   <li><p>Choose <b class="emphasis-bold">Mask</b> &#8594; <b class="emphasis-bold">New</b> &#8594; <b class="emphasis-bold">From Image</b>.</p></li>
   <li><p>Choose <b class="emphasis-bold">Mask</b> &#8594; <b class="emphasis-bold">Edit</b>.</p></li>
</ol>

<p>The second step brings up the dialog box, shown in 
<a href="#png.ch04.fig.8">Figure 4-8</a>. Setting the source to This Window guarantees that the size is correct,
and basing it on the Source Opacity, where the original image had no
transparency at all, will produce a blank slate on which gradients and other
fills can be placed. Choosing the <b class="emphasis-bold">Source luminance</b> button instead will
generate transparency according to the light and dark areas in the image
itself, and the areas that are considered transparent can be inverted by
checking the <b class="emphasis-bold">Invert mask data</b> checkbox at the bottom. Either way,
the mask can be edited as an ordinary grayscale image after the third step.
</p>


<a name="png.ch04.fig.8" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <img width=502 height=258 border=0
       src="figs/png.0408.edit2.png" alt="Figure 4-8" /><br>
      <br>
      <b>Figure 4-8:</b>  <i>Paint Shop Pro alpha mask window.</i>
<!--
      <FONT SIZE="-1">(Click on image for full-scale version.)</FONT>
 -->

    </td>
  </tr>
</table>
</p>
</div>

<p>Saving such an image is a two-step procedure. First, the alpha mask must
be ``glued'' to the main image as its alpha channel, after which the standard
save procedure applies:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">Mask</b> &#8594; <b class="emphasis-bold">Save To Alpha Channel</b>.</p></li>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Save As</b> (or <b class="emphasis-bold">Save Copy As</b>).</p></li>
</ol>

<p>Converting an existing truecolor image to palette-based or creating a
new palette-based image involves essentially the same procedure:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Open</b> or <b class="emphasis-bold">New</b>.</p></li>
   <li><p>Choose <b class="emphasis-bold">Colors</b> &#8594; <b class="emphasis-bold">Decrease Color Depth</b> &#8594; <b class="emphasis-bold">256 Colors</b>.</p></li>
</ol>

<p>Other depths are available, but most create the same size palette; indeed,
the only other supported palette sizes in the output file are 2 and 16
colors. For an existing image, a dialog box will pop up offering different
quantization methods (in the <b class="emphasis-bold">Palette</b> section) and dithering methods
(in the <b class="emphasis-bold">Reduction method</b> section). Note that <em class="emphasis">Nearest color</em> means
no dithering; <em class="emphasis">Error diffusion</em> is generally the nicest looking but slowest
approach, sometimes known as Floyd-Steinberg or ``FS'' dithering in other
programs. To add and view transparency, use the Colors menu again:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">Colors</b> &#8594; <b class="emphasis-bold">Set Palette Transparency</b>.</p></li>
   <li><p>Choose <b class="emphasis-bold">Set the transparency value to the current background color</b>.</p></li>
   <li><p>Choose <b class="emphasis-bold">Colors</b> &#8594; <b class="emphasis-bold">View Palette Transparency</b>.</p></li>
</ol>

<p>To set a color other than the background color as transparent, use the
eyedropper tool to pick the color and find its index. Then, in place
of the second step, select <b class="emphasis-bold">Set the transparency value to palette
entry</b> and enter the index value of the color.</p>


<p><a name="INDEX-341" />Paint Shop Pro currently does not support gamma correction, even though it
does provide a Monitor Gamma Adjustment window (via <b class="emphasis-bold">File</b> &#8594;
<b class="emphasis-bold">Preferences</b> &#8594; <b class="emphasis-bold">Monitor Gamma</b>) that could in theory be used to
supply the appropriate information. PSP does add a modification-time chunk,
but it is incorrectly written using the local time zone of the user rather
than Universal Time as required by the PNG specification.</p>


<p><a name="INDEX-342" />
<a name="INDEX-343" />Text annotations, including those found in other file formats, are
preserved and converted as needed. In addition, the user may add text
chunks with the Title, Author, Copyright, and Description keywords via
<b class="emphasis-bold">View</b> &#8594; <b class="emphasis-bold">Image Information</b> option. The program stores
DOS-style line endings (both ``carriage return'' and ``line feed''
character codes) rather than following the PNG spec's recommendation
to use Unix-style line endings (line-feed characters only).</p>


<p><a name="INDEX-344" />
<a name="INDEX-345" />With regard to file sizes, Paint Shop Pro always uses near-optimal
compression and filtering settings on the image data. There is no
option for faster compression, although PSP's own format is typically
used for intermediate saves. The program's only major failing in this
regard is that it always writes the maximum number of palette entries
regardless of how many are used, and it doesn't reorder the palette so
that the single transparent entry comes first, which would allow the
remainder of the transparency chunk to be omitted. For a 50-color web
icon with no transparency, this means the file will be 618 bytes
larger than it should be, solely due to the overhead required to store
a full 256 palette entries. With transparency, an average of 25
additional bytes would be wasted for this example, but the cost for
true 256-color images may be as much as 255 bytes. As I've noted
elsewhere, that can be a serious penalty for small images. In
addition, PSP doesn't support writing three- or four-color images with
2 bits per pixel but instead will use 4 bits. Compression almost
never makes up the difference; the output file will be roughly twice
as large as it should be.</p>


<p>More information about Paint Shop Pro is available at Jasc's web site,
<a href="http://www.jasc.com/psp.html">http://www.jasc.com/psp.html</a>.


<a name="INDEX-346" /></p>


















</div>
<div class="sect1"><a name="png.ch04.div.5" />
<h2 class="sect1">4.5. The GIMP</h2>


<p><a name="INDEX-347" />
<a name="INDEX-348" />The only offering in our roundup that is available for Linux, the GNU Image
Manipulation Program, is also unique in that it may be obtained for free, with
complete source code, if desired. Originally written for Unix and the X Window
System, the GIMP (or Gimp) is also being ported to OS/2 and 32-bit Windows.<a href="#FOOTNOTE-27">[27]</a>
I tested version 1.0.2, the latest nondevelopment release as of this
writing, under Linux 2.0. PNG support is handled via a plug-in with
its own release schedule, though. A considerably improved version
(1.1.7) was released in late February 1999, after my tests; I'll note
its changes as we go.</p><blockquote class="footnote">


<a name="FOOTNOTE-27" />

<p>[27] Not only that, but the Windows port even runs under the Windows emulator WINE,
making it one of the few large applications that can be run simultaneously as
a native Linux application and as an emulated Windows program. Of course,
that would be a fairly twisted thing to do.</p>


</blockquote>


<p>Like Photoshop, the GIMP uses a modal approach to the basic image
types, requiring an explicit conversion between RGB, grayscale, and
indexed-color images. Both alpha channels and gamma correction are
supported, albeit at a relatively basic level; I'll discuss the
details shortly. Currently, the standard GIMP release does not support
sample depths greater than 8 bits, but a separate development fork
known as GIMP16 (or informally as ``Hollywood'') has extended the
GIMP's core to operate on deep pixels and is expected to merge with
the main development fork in the 2.0 time frame. There was no support
<a name="INDEX-349" />for text annotations in the stock 1.0.2 release, but version 1.1.7 of
the PNG plug-in appears to have added support for user-specified
Title, Author, Description, Copyright, Creation Time, Disclaimer,
Warning, Source, and Comment keywords; the Software keyword is added
automatically. The newer plug-in release also supports timestamps via
PNG's tIME chunk (described in <a href="chapter11.html">Chapter 11, "PNG Options and Extensions"</a>).</p>


<p>The GIMP employs Photoshop's layer-based editing model and in general will
be familiar to anyone comfortable with Photoshop. The user interface does
differ in one significant respect, however: instead of a large parent window
with a main menu bar and various child windows inside, the GIMP uses separate,
standalone windows for everything, and the functions corresponding to
Photoshop's main menu are instead accessible via the righthand mouse button.
At its most minimal, the GIMP consists only of the small tool-palette window,
which contains a truncated File menu from which one can create a new image
or open an existing file.</p>


<p>Conveniently enough, that leads us directly into our portrait example:</p>


<ol>
   <li><p>Choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Open</b> and select an appropriate
truecolor image.</p></li>
   <li><p>Click the right mouse button over the image and select <b class="emphasis-bold">Layers</b> &#8594; <b class="emphasis-bold">Add
Alpha Channel</b>, after which the titlebar will indicate <b class="emphasis-bold">(RGB-alpha)</b>
instead of just <b class="emphasis-bold">(RGB)</b>.</p></li>
   <li><p>Click on the <b class="emphasis-bold">Lasso</b> tool (upper right corner of the tool palette).</p></li>
   <li><p>Hold the right mouse button and choose <b class="emphasis-bold">Dialogs</b> &#8594; <b class="emphasis-bold">Tool Options...</b>.</p></li>
   <li><p>Click on the <b class="emphasis-bold">Feather</b> checkbox and set the <b class="emphasis-bold">Feather Radius</b> slider
to some value, perhaps 25.</p></li>
   <li><p>Draw a loop around the face of the subject.</p></li>
   <li><p>Invert the lasso selection: hold the right button and choose <b class="emphasis-bold">Select</b> &#8594; <b class="emphasis-bold">Invert</b>.</p></li>
   <li><p>Erase everything outside the loop: hold the right button and choose <b class="emphasis-bold">Edit</b> &#8594;
<b class="emphasis-bold">Clear</b>.</p></li>
</ol>

<p>Aside from the use of the right mouse button instead of a menu bar, the
procedure is almost identical to that in each of the other applications
I've investigated. Note that the GIMP's feathering extends to both
sides of the lassoed path, much as ImageReady's does. Unlike ImageReady,
however (but similar to Fireworks), GIMP's ``radius'' appears to indicate
the total width of the alpha band, not just half of it. The Lasso options
box, the tool palette, and the main image window are shown overlapped in
<a href="#png.ch04.fig.9">Figure 4-9</a>. (Ordinarily, the first two float elsewhere on the desktop.)</p>


<p>To save the image as a 32-bit RGBA PNG, bring up the <b class="emphasis-bold">Save as</b> dialog:</p>


<ol>
   <li><p>Hold the right mouse button and choose <b class="emphasis-bold">File</b> &#8594; <b class="emphasis-bold">Save as</b>.</p></li>
   <li><p>Pick an appropriate directory and filename for the image, and either choose
PNG explicitly from the drop-down file type list or do so implicitly
by typing the <em class="emphasis">.png</em> filename extension.</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button, which brings up the <b class="emphasis-bold">PNG Options</b> dialog box.</p></li>
   <li><p>Set the <b class="emphasis-bold">Compression level</b> slider to an appropriate value and
optionally check the <b class="emphasis-bold">Interlace</b> checkbox.</p></li>
   <li><p>Click the <b class="emphasis-bold">OK</b> button.</p></li>
</ol>

<a name="png.ch04.fig.9" />
<div class="figure" align="center">
<p>
<table width=502>
  <tr>
    <td>

      <a href="figs/png.0409.big.png"><img width=502 height=348 border=0
       src="figs/png.0409.edit2.png" alt="Figure 4-9" /></a><br>
      <br>
      <b>Figure 4-9:</b>  <i>The GIMP's Lasso options window, tool palette, and
      main image window.</i>
      <FONT SIZE="-1">(Click on image for full-scale version.)</FONT>

    </td>
  </tr>
</table>
</p>
</div>

<p><a name="INDEX-350" />
The compression-level slider actually allows noninteger values, but it
appears to truncate the fractional part. Thus, for maximum compression,
the slider must be set at 9.0 exactly. For typical usage, 6.0 is fine,
and for quick saves with decent compression, use 3.0.</p>


<p><a name="INDEX-351" />
Conversion of an RGB image (with or without an alpha channel) to
grayscale or to indexed-color is accomplished via the right mouse
button's <b class="emphasis-bold">Image</b> submenu, either the <b class="emphasis-bold">Grayscale</b> or <b class="emphasis-bold">Indexed items</b>. Going from
32-bit RGBA to 16-bit gray+alpha is quite fast, and the GIMP saves the
result properly as a gray+alpha PNG file. Similarly, converting plain
RGB or grayscale to indexed-color mode works well and saves correctly.
But conversion of RGBA or gray+alpha to Indexed is problematic with
the stock 1.0.2 PNG plug-in. GIMP's internal palette model appears to
be GIF-like in that there's no evidence that it supports partial
transparency in indexed images; the main image display switches to a
hard-edged mask with only fully transparent and fully opaque regions
visible. More serious is the fact that even this much transparency
results in a truncated file, a core dump (though not a termination of
the other GIMP windows), and a pop-up error box indicating that the
save failed. Perusal of the older PNG plug-in's source code strongly
suggests that transparency support for indexed images was never
<a name="INDEX-351.01-new" />
implemented. Fortunately, Yamahata Kenichiro addressed this in
version 1.1.7 of the plug-in, but I did not have a chance to
investigate how it works.
</p>


<p>
<a name="INDEX-352" />
Aside from that and a lack of support for text comments, the only
other PNG-related problem seems to be in the gamma chunk. Version
1.0.2 of the GIMP has no support for monitor settings or calibration,
and in the absence of those, it should assume a PC-like (or sRGB)
environment on PCs and most workstations. That is, the gamma value it
writes to file should be the inverse of 2.2. But the stock PNG
plug-in actually writes 1.0, a value that causes images to appear
extremely washed out when viewed with a gamma-aware application
(unless the originating machine was a NeXT workstation). Fortunately,
the developers addressed this problem within 24 hours of its having
been reported, and version 1.1.7 of the PNG plug-in includes the fix
(as will the next full release of the GIMP, presumably). Images saved
under older versions can be corrected in a batch operation with a tool
such as pngcrush. The following example performs a batch correction and puts
all of the
fixed images into a subdirectory called <em class="emphasis">fixed/</em>:</p>


<blockquote><pre class="code">pngcrush -d fixed -replace_gamma 0.454545 foo.png foo2.png ...</pre></blockquote>


<p>
<a name="INDEX-353" />	<!-- GRR 20030702:  ~redundant (same as INDEX-350) -->
The GIMP's compression of PNG files is excellent, with the program choosing
the proper filtering strategies for both palette-based and continuous-tone
images. pngcrush, covered in <a href="chapter05.html">Chapter 5, "Applications: Image Converters"</a>, was unable to eke out any
improvement in file size beyond that due to eliminating the overhead of
multiple image-data chunks, which amounts to a mere 12 bytes per 8,204-byte
chunk, or less than 0.15% of the overall file size.</p>


<p>The main GIMP home page is at <a href="http://www.gimp.org/">http://www.gimp.org/</a>, with
extensions available from the plug-in registry,
<a href="http://registry.gimp.org/">http://registry.gimp.org/</a> (including the PNG plug-in at
<a href="http://registry.gimp.org/detailview.phtml?plugin=PNG+for+GIMP+1.0/0.99.x">http://registry.gimp.org/detailview.phtml?plugin=PNG+for+GIMP+1.0/0.99.x</a>). The
GIMP16 project has a separate home page at
<a href="http://film.gimp.org/">http://film.gimp.org/</a>.
<a name="INDEX-354" />
<a name="INDEX-355" />
</p>


















</div>
<div class="sect1"><a name="png.ch04.div.6" />
<h2 class="sect1">4.6. Other Image Editors</h2>


<p>Many other editing applications also support PNG. All of the known ones
are in the following list, with the version number of the latest release (as of early
1999) given wherever possible.
<?x-need 10?></p>


<dl>
<dt><b><em class="emphasis">ArtEffect</em></b></dt><dd><p><a name="INDEX-356" />Version 2.6, Haage &amp; Partner Computer. Available for Amiga;
read/write support for PNGs; full (32-bit) alpha support.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.haage-partner.com/ae_e.htm">http://www.haage-partner.com/ae_e.htm</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Becasso</em></b></dt><dd><p><a name="INDEX-357" />Version 1.1, Sum Software. Available for BeOS PPC/x86;
read/write support for PNGs; full (32-bit) alpha support; no gamma support.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.sumware.demon.nl/products/becasso/">http://www.sumware.demon.nl/products/becasso/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Canvas</em></b></dt><dd><p><a name="INDEX-358" />Version 6.0, Deneba Software. Available for 32-bit Windows and Mac
PPC; read/write support for PNGs. Emphasizes extensive support for
transparency, alpha channels, and anti-aliasing, but the demo version
does not allow images to be saved, so its level of PNG transparency
support (if any) is not known.
</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.deneba.com/dazroot/prodinfo/canvas6/info.html">http://www.deneba.com/dazroot/prodinfo/canvas6/info.html</a></pre></blockquote><dl>
<dt><b><em class="emphasis">ColorWorks:WEB</em></b></dt><dd><p><a name="INDEX-359" />Version 4, SPG. Available for 32-bit Windows;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.spg-net.com/product2.html">http://www.spg-net.com/product2.html</a></pre></blockquote><dl>
<dt><b><em class="emphasis">CorelDRAW</em></b></dt><dd><p><a name="INDEX-360" />Version 8, Corel. Available for 32-bit Windows and Mac PPC;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.corel.com/products/graphicsandpublishing/draw8/">http://www.corel.com/products/graphicsandpublishing/draw8/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">CorelXARA</em></b></dt><dd><p><a name="INDEX-361" />Version 1.5, Xara. Available for 16- and 32-bit Windows;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.xara.com/noframes/corelxara/">http://www.xara.com/noframes/corelxara/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Enhance</em></b></dt><dd><p><a name="INDEX-362" />Version 4.0, MicroFrontier. Available for Mac 68k/PPC;
read/write support for PNGs; no gamma support.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.microfrontier.com/products/enhance40/">http://www.microfrontier.com/products/enhance40/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">FreeHand Graphics Studio</em></b></dt><dd><p><a name="INDEX-363" />Version 8.0.1, Macromedia. Available for
32-bit Windows and Mac PPC; read/write support for PNGs; full (32-bit) alpha
support.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.macromedia.com/software/freehand/">http://www.macromedia.com/software/freehand/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">HoTMetaL PRO</em></b></dt><dd><p><a name="INDEX-364" />Version 5.0, SoftQuad. Available for 32-bit Windows
(version 3.0 was available for 16-bit Windows); read/write support for PNGs.
This is actually an HTML editor, but versions 3.0 and later incorporate an
image editor as well. In version 5.0, the bundled image application is
Ulead's PhotoImpact 3.02 SE.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.sq.com/products/hotmetal/">http://www.sq.com/products/hotmetal/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Illustrator</em></b></dt><dd><p><a name="INDEX-365" />
<a name="INDEX-366" />Version 8.0, Adobe. Available for 32-bit Windows and
Mac PPC; read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.adobe.com/prodindex/illustrator/">http://www.adobe.com/prodindex/illustrator/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Image Composer</em></b></dt><dd><p><a name="INDEX-367" />
<a name="INDEX-368" />Version 1.5, Microsoft. Available for 32-bit Windows;
read/write support for PNGs; full (32-bit) alpha support. This was originally
known as Altamira Composer and was bundled with FrontPage 98; it appears to
have been superseded by PhotoDraw 2000.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.microsoft.com/imagecomposer/">http://www.microsoft.com/imagecomposer/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">ImageFX</em></b></dt><dd><p><a name="INDEX-369" />Version 3.2, Nova Design. Available for Amiga;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.novadesign.com/fxinfo.htm">http://www.novadesign.com/fxinfo.htm</a></pre></blockquote><dl>
<dt><b><em class="emphasis">MediaStudio Pro</em></b></dt><dd><p><a name="INDEX-370" />Version 5.2, Ulead Systems. Available for 32-bit
Windows; read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.ulead.com/mspro5/">http://www.ulead.com/mspro5/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">NetStudio</em></b></dt><dd><p><a name="INDEX-371" />Version 1.0, NetStudio. Available for 32-bit Windows;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.netstudio.com/product.html">http://www.netstudio.com/product.html</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Personal Paint</em></b></dt><dd><p><a name="INDEX-372" />Version 7.1, Cloanto. Available for Amiga;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.cloanto.com/amiga/programs_ppaint.html">http://www.cloanto.com/amiga/programs_ppaint.html</a></pre></blockquote><dl>
<dt><b><em class="emphasis">PhotoDraw 2000</em></b></dt><dd><p><a name="INDEX-373" />Microsoft. Available for 32-bit Windows; read/write
support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.microsoft.com/office/photodraw/">http://www.microsoft.com/office/photodraw/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">PhotoImpact</em></b></dt><dd><p><a name="INDEX-374" />Version 4.2, Ulead Systems. Available for 32-bit Windows;
read/write support for PNGs; no gamma support in version 3.0 (unknown in 4.0).</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.ulead.com/pi/">http://www.ulead.com/pi/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">PhotoLine</em></b></dt><dd><p><a name="INDEX-375" />Version 4.57, Computerinsel. Available for 32-bit Windows;
read/write support for PNGs; version 2.x reportedly had problems saving alpha
channels.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.pl32.com/">http://www.pl32.com/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Photonyx</em></b></dt><dd><p><a name="INDEX-376" />Version 1.0, Chrome Imaging. Available for 32-bit Windows;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.chrome-imaging.com/photonyx.html">http://www.chrome-imaging.com/photonyx.html</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Picnic</em></b></dt><dd><p><a name="INDEX-377" />Version 0.4, Peder Blekken. Available for BeOS PPC;
read/write support for PNGs (in fact, PNG is the only supported output format).</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.be.com/beware/Graphics/Picnic.html">http://www.be.com/beware/Graphics/Picnic.html</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Picture Publisher</em></b></dt><dd><p><a name="INDEX-378" />Version 8, Micrografx. Available for 32-bit Windows;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.micrografx.com/picturepublisher/">http://www.micrografx.com/picturepublisher/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Satori</em></b></dt><dd><p><a name="INDEX-379" />Version 2.5, Spaceward Graphics. Available for 32-bit Windows;
read/write support for PNGs; full (32-bit) alpha support; may include support
for images with 16-bit sample depth.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.satoripaint.com/">http://www.satoripaint.com/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Shake</em></b></dt><dd><p><a name="INDEX-380" />Version 2.03, Nothing Real. Available for SGI IRIX and 32-bit
Windows; read/write support for PNGs; full support for images with
16-bit sample depth; full alpha support (32-bit and 64-bit); partial
(write-only) gamma support.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.nothingreal.com/Products/">http://www.nothingreal.com/Products/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">VideoStudio</em></b></dt><dd><p><a name="INDEX-381" />Version 3.0, Ulead Systems. Available for 32-bit Windows;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.ulead.com/vs/">http://www.ulead.com/vs/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Visio</em></b></dt><dd><p><a name="INDEX-382" />Version 5.0, Visio. Available for 32-bit Windows (version 4.1
is still available for Windows 3.x); read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.visio.com/products/">http://www.visio.com/products/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">WebImage</em></b></dt><dd><p><a name="INDEX-383" />Version 2.11, Group 42. Available for 32-bit Windows
(version 1.72 is still available for Windows 3.x); read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.group42.com/webimage.htm">http://www.group42.com/webimage.htm</a></pre></blockquote><dl>
<dt><b><em class="emphasis">WebPainter</em></b></dt><dd><p><a name="INDEX-384" />Version 3.0.5, Totally Hip Software. Available for Mac PPC and 32-bit Windows;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.totallyhip.com/Link/ProductsWP3.html">http://www.totallyhip.com/Link/ProductsWP3.html</a></pre></blockquote><dl>
<dt><b><em class="emphasis">WinImages</em></b></dt><dd><p><a name="INDEX-385" />Version R5, Black Belt Systems. Available for 32-bit
Windows; read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.blackbelt.com/wi_r5_dt.html">http://www.blackbelt.com/wi_r5_dt.html</a></pre></blockquote><dl>
<dt><b><em class="emphasis">Xara Webster</em></b></dt><dd><p><a name="INDEX-386" />Version 2.0, Xara. Available for 32-bit Windows;
read/write support for PNGs.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.xara.com/noframes/webster/">http://www.xara.com/noframes/webster/</a></pre></blockquote><dl>
<dt><b><em class="emphasis">xart</em></b></dt><dd><p><a name="INDEX-387" />Version of June 5, 1998, Rick Hohensee and others. Available
for Unix/X; read/write support for PNGs; no alpha support. This is a ``mutant
spawn'' of XPaint with emphasis on mouse-based freehand drawing.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://linux01.gwdg.de/~rhohen/linux.html">http://linux01.gwdg.de/~rhohen/linux.html</a>
<a href="http://www.ibiblio.org/pub/Linux/apps/graphics/draw/xart19980605.tgz">http://www.ibiblio.org/pub/Linux/apps/graphics/draw/xart19980605.tgz</a></pre></blockquote>

<dl>
<dt><b><em class="emphasis">XPaint</em></b></dt><dd><p><a name="INDEX-388" />Version 2.5.6, David Koblas, Torsten Martinsen, and others.
Available for Unix/X; read/write support for PNGs; no alpha support.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.image.dk/~torsten/xpaint/">http://www.image.dk/~torsten/xpaint/</a></pre></blockquote>
<!-- 20030103:  resolves to http://home.worldonline.dk/torsten/xpaint/ -->

<dl>
<dt><b><em class="emphasis">xRes</em></b></dt><dd><p><a name="INDEX-389" />Version 3.0, Macromedia. Available for 32-bit Windows and Mac
68k/PPC; read/write support for PNGs; full (32-bit) alpha support; no gamma
support.</p></dd>

</dl>


<blockquote><pre class="code"><a href="http://www.macromedia.com/software/xres/">http://www.macromedia.com/software/xres/</a></pre></blockquote><p>New image editors with PNG support and updated information on the
editors in the preceding list can be found at the <em class="emphasis">Image Editors
with PNG Support</em> web page
<a href="http://www.libpng.org/pub/png/pngaped.html">http://www.libpng.org/pub/png/pngaped.html</a>. This URL should
remain valid for at least a few years, but there are never any
guarantees on the World Wide Web. Should the link ever break, use a
search engine to look for the page's title string or for one of the
more oddly named utilities or companies listed.
<a name="INDEX-390" />
<a name="INDEX-391" /></p>


</div>

















<hr> <!-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->

<a href="chapter03.html"><img width=24 height=13 border=0 align="left"
 src="images/prev.png" alt="&lt;-"></a>

<a href="chapter05.html"><img width=24 height=13 border=0 align="right"
 src="images/next.png" alt="-&gt;"></a>

<div align="center">
  <a href="chapter03.html"><font size="-1" color="#000000"
   ><b>PREVIOUS</b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a
     href="toc.html"><font size="-1" color="#000000"
   ><b>CONTENTS</b></font></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a
     href="chapter05.html"><font size="-1" color="#000000"
   ><b>NEXT</b></font></a>
</div>

<hr> <!-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->



</body></html>