mod_ezweb_download�⥸�塼�������ǡ�����ü���ऱ������ݸǽ(?)�ˤĤ���ͷ��Ǥޤ������Ȥ����櫓��PNG,GIF,JPEG�˥����Ȥ���������ˤĤ��Ƥδ�ñ�ʥ��ȥƥ��ȼ�����
�����ξ����ͷ�Ӥ�Ĵ�٤Ƽ�������ʪ�ʤΤǡ����������Τ���Ƥ����ǽ��������ޤ����ޤ�������pixel�������λ��Ȥ����Ȥ��ä�����ϴޤޤ�ޤ���Τ����ա�����ˤ��Ƥ�KDDI��"kddi_copyright=on"��ž��(?)���������롢�Ȥ����ޤ��
����Τ��륳��ƥ�Ĥϰ���ž���Ե����ȸ�äƤ���褦�ʥ͡��ߥ����������ʡ���������٤Ĥ˻��KDDI�������Ȥ����������櫓����ʤ��Ǥ��衣�Ϥ���
by KDDI
PNG
PNG�Υե�����ϡ�1�Ĥ������ͥ����ȡ�ʣ������������¤ֹ�¤�Ǥ���SIGNATURE(8 byte); CHUNK(12 + data byte) x n;
PNG�Υ����ͥ���
�����ͥ���ϡ֤��Υե������PNG�Ǥ���פ�ɽ��������ͤǡ��ե��������Ƭ�˼��Τ褦���ͤ������ޤ�ޤ���0x89 0x50 0 0x4e 0x47 0x0d 0xa 0x1a 0x0a
PNG�����
�����PNG�ե�������ݻ��������μ���˱�����IHDR�����IDAT����Ȥ��ä�ʣ���μ��ब¸�ߤ��ޤ�������ι�¤�ϥǡ����μ���˴ط��ʤ����ΤȤ���Ǥ���length(4 byte); type(4 byte); data(0��n byte); crc(4 byte);length�ϡ������data����Ĺ����4�Х��Ȥ��ͤǡ��ӥå�����ǥ�����dz�Ǽ���ޤ���
type�ϥ���μ����4�Х��Ȥ��ͤǤ���type���ͤ�ʸ�����ɽ���Ǥ��ޤ�������μ���ˤĤ��Ƥ�PNG�Υɥ������ - Chunk types�Ȥ��ޤ���
data�ϥ���˴ޤ�ǡ������Τ�ΤǤ���Ĺ����0�ξ��⤢��ޤ���
crc��type��data�����ͤ����뤿����ͤǤ���CRC���르�ꥺ��ˤĤ��Ƥβ���ȥ���ץ륳���ɤ�PNG�Υɥ������ - Cyclic Redundancy Code algorithm�Ȥ��ޤ���
������PNG�ե�����ˤϾ��ʤ��Ȥ�
- SIGNATURE
- IHDR�����
- IDAT�����
- IEND�����
IHDR����ϲ����Υ������䰵����ˡ�ʤɤȤ��ä�������ɽ�������˴ؤ��������ݻ��������٤ƤΥ������Ƭ�˰��֤���ɬ�פ�����ޤ���IHDR�����type��
0x73(I) 0x72(H) 0x68(D) 0x82(R)�ǡ�data���ϼ��Τ褦�ʥǡ�����¤�Ǥ���
width(4 byte); height(4 byte); bit depth(1 byte); color type(1 byte); compression method(1 byte); filter method(1 byte); interface method(1 byte);
IDAT����ϲ����Υǡ������ݻ����ޤ���IDAT�����type��
0x73(I) 0x68(D) 0x65(A) 0x84(T)�Ǥ���
IEND�����PNG�Υǡ������ȥ��ν�ü���ޤ���IEND�����type��
0x73(I) 0x69(E) 0x78(N) 0x68(D)�Ǥ���
IHDR�������Ƭ��IEND����������˰��֤���ɬ�פ�����ޤ���������ʳ��Υ�����¤ӽ������Ϥ���ޤ���
PNG������
PNG�˥ƥ����Ⱦ�������������tEXt����ʤɤ����Ѥ��ޤ���tEXt�����type��0x74(t) 0x45(E) 0x58(X) 0x74(t)�Ǥ���data����
keyword(1��79 byte); separator(1 byte); text(n byte);�η����dz�Ǽ����ޤ���keyword�ϥƥ����Ⱦ���μ��̤᤹ʸ����Ǥ���separator��keyword��³��text��ʬ�䤹��ʸ����'\0'����Ѥ��ޤ���text�ϥƥ����Ⱦ�������ΤǤ���
PNG������ݸ�����������
�������äʤɤ˥���������ɤ���������ž���ʤɤ����¤�����ϡ��ʲ��Τ褦�ʥǡ�����tEXt������ɲä��ޤ���keyword = "Copyright"; text = "kddi_copyright=on"; // EZweb�ξ�� // text = "copy=\"NO\""; // iMODE�ξ��tEXt�����IHDR�����ľ��ʤ�Ǥ�դξ��������ߤޤ���IHDR�����ľ��Ȥϥե�������Ƭ����33�Х�����(SIGNATURE(8) + IHDR(25))�Ǥ���
GIF
GIF�ե�����ϥ����ͥ����ޤ�1�Ĥ��إå��ȡ�ʣ�����֥��å����¤ӡ��Ǹ��Trailer(0x3b)��ޤ¤�Ǥ���HEADER(13��781 byte); BLOCK x n; Trailer(1 byte);
GIF�Υإå�
�إå��ˤϡ֤��Υե������GIF�Ǥ���פ�ɽ�������ͥ���ȡ��С������ȡ������Υ������䥫�顼�ơ��֥�ʤɤ�ɽ��������ޤ�Ǥ��ޤ���signature(3 byte); version(3 byte); width(2 byte); height(2 byte); color table(1 byte); background color index(1 byte); pixel aspect ratio(1 byte); global color table(0��768 byte);���Τ���color table�γƥӥåȤ�
global color table flag(0x80); color resolution(0x70); sort flag(0x08); size of global color table(0x07);���Ƥ��ޤ����⤷global color table flag��Ω�äƤ�����ϡ��إå���������global color table����Ϳ����ޤ������Υ�������size of global color table���ͤ��Ȥ˼��Τ褦�˷����ޤ���
3 * (2 ^ (size_of_global_color_table + 1)); // C �ξ��� 3 * (1 << (size_of_global_color_table + 1)) �Ȥ�? // Perl�� 3 * (2**(size_of_global_color_table + 1)) �Ȥ�?
GIF�Υ֥��å�
�֥��å�����Ƭ1�ǥ֥��å��μ����Ƚ�ꤷ�ޤ��������ǡ������ݻ�����Image�֥��å��ξ���0x2c����¾�γ�ĥ�֥��å��ξ���
0x21�Ǥ�����ĥ�֥��å��ξ��ϼ���1�Х��Ȥ��ͤˤ�äƼ����Ƚ�ꤷ�ޤ���Ʃ������䥢�˥��������delay�ʤɤ��������Graphic Control Extension�֥��å��ξ���
0x21 0xf9�����Ȥ��ݻ�����Comment Extension�֥��å��ξ���
0x21 0xfe�Ǥ���
�֥��å��μ���ˤ�äƥǡ�����¤���ۤʤ�ޤ���
GIF������
�����Ȥ��ݻ�����Comment Extension�֥��å���block size(1 byte) text(n byte) x n block terminator(1 byte)�Ȥ�����¤�Ǥ���
block size��text���Υ�������1�Х��ȤǼ����ޤ���
text�ϥ����ȤȤ���������ʸ������ݻ����ޤ���
block terminator�ϥ֥��å��ν�ü��1�Х��Ȥ���(0x00)�Ǥ���
GIF������ݸ�����������
(��:̤����)�������äʤɤ˥���������ɤ���������ž���ʤɤ����¤�����ϡ��ʲ��Τ褦�ʥǡ�����Comment Extension�֥��å����ɲä��ޤ���
text = "kddi_copyright=on"; // EZweb�ξ�� // text = "copy=\"NO\""; // iMODE�ξ��Comment Extension�֥��å��ϥإå���³��Ǥ�դξ��������ߤޤ���GIF�Υإå��ϲ���Ĺ�ʤΤǡ�
- �إå���13byte�ɤ߹���
- Global Color Table�������������
- Global Color Table�Υ������������ե��åȤ������֤�Comment Extension�֥��å���������
JPEG
JPEG�Υե������ʣ���������������鹽������ޤ���SOI SEGMENT(2 byte) SEGMENT x n EOI SEGMENT(2 byte)��Ƭ�˸���륻�����Ȥ�SOI�������Ȥǡ�����2�Х��Ȥ��ͤǹ�������ޤ���
0xff 0xd8�����˸���륻�����Ȥ�EOI�������Ȥǡ�����2�Х��Ȥ��ͤǹ�������ޤ���
0xff 0xd9�ޤ���SOI�������Ȥ�ľ��ˤϲ����ξ�����ݻ�����APP0��APP1�ʤɤ�APPn�������Ȥ����֤���ޤ���
JPEG��������
SOI��EOI������������Ȥ����ˤ�äƹ�¤���ۤʤ�ޤ������ۤȤ�ɤ�marker(2 byte) length(2 byte) data(n byte)�Ȥ��ä���¤�Ǥ���
marker�ϥ������Ȥμ����2�Х��Ȥ��ͤǤ���SOI(0xff 0xd8), EOI(0xff 0xd9)��¾�ˤ�APP0(0xff 0xe0), SOF0(0xff 0xc0)�ʤɥ������Ȥμ���˱������ͤ��������Ƥ��ޤ���
length�ϥ������Ȥ��ݻ�����data�Υ�������2�Х��Ȥ��ͤǡ��ӥå�����ǥ�����dz�Ǽ���ޤ���length�Ǽ������Ĺ����data�Υ����� + 2�Ǥ����������դ�ɬ�פǤ���
JPEG������
JPEG�˥����Ȥ�������ˤ�COM��������(0xff 0xfe)����Ѥ��ޤ���COM�������Ȥ�marker(2 byte) length(2 byte) text(n byte)�Ȥ�����¤�Ǥ���
JPEG������ݸ�����������
(��:̤���ڡ�COM�������ȤǤϤʤ�APP1(Exif)��Copyright(0x82 0x98)������������٤�?)�������äʤɤ˥���������ɤ���������ž���ʤɤ����¤�����ϡ��ʲ��Τ褦�ʥǡ�����COM�������Ȥ��ɲä��ޤ���
text = "kddi_copyright=on"; // EZweb�ξ�� // text = "copy=\"NO\""; // iMODE�ξ��COM�������Ȥ�SOI�������Ȥ�³����APP0��APP1�Ȥ��ä�"APPn"�������Ȥθ����Ǥ�դξ��������ߤޤ���APPn�������Ȥ�marker��
0xff 0xe0; // APP0 JFIF application segment 0xff 0xe1; // APP1 Exif ... 0xff 0xef; // APP15�ʤɡ��ե���������˱������ޡ������Ѱդ���Ƥ��ޤ���
������
- SOI�������Ȥ�³��APPn�������Ȥ�marker��length����6�Х����ɤ߹���
- APPn�������ȤΥ������������ե��åȤ������֤�COM�������Ȥ�������
����
�Ȥ����櫓�Ǥ����Υͥ����Ȥ�PNG, GIF, JPEG�γƥե�����˥����Ȥ�������ġ����Ƥߤޤ�����imgcmt version 1.0.0�������������ƥե���������Ѥ�
- imgcmtpng - PNG��
- imgcmtgif - GIF��
- imgcmtjpg - JPEG��
$ imgcmtpng Copyright kddi_copyright=on < src.png > dist.png $ imgcmtgif kddi_copyright=on < src.gif > dist.gif $ imgcmtjpg kddi_copyright=on < src.jpg > dist.jpg�Ȥ��ä��Ȥ��������顼���ˤϥ��ȥ����ڤ�����Ǥ��������ξ��϶��ϥ��롼����Ĥ���������褤���⤷��ޤ���͡�
imgcmt��libpng��libjpeg�ʤɤΥե������μ����ǤϤʤ����������ɲäΤߤΥ���ץ�Ǿ����ʼ����Ǥ���
$ wc -l *.c
114 imgcmtgif.c
117 imgcmtjpg.c
166 imgcmtpng.c
397 total
mgcmtpng.c����CRC�Υơ��֥������Ȥ��Ƥ⤿�����ΤǤ���äȤ����礭���Ǥ��͡������ƻ䤬���äƤ���TU-KA��EZwebü��TK22�ǡ�PNG�˴ؤ��ƴ��Ԥɤ����ư����ǧ�Ǥ��ޤ�������JPEG�˴ؤ��ƤϤɤ��������ְ�äƤ���Τ��褯Ƚ��ޤ������̤��ư���Ԥ��ޤ��ޤ�TK22���ɻ�Ǥ�GIF�ݡ��Ȥ��Ƥ��ʤ��餷���ΤǴ�����̤���ڤǤ���
�ܤ������Υ����ȴ�˾�ä�������KDDI��Web�����Ȥ˾夬�äƤ���ʾ�ξ���Υݥ����������������Ȥ����äƤ�ñ�˸Ŀ�Ū��̣��Ĵ�٤Ƥ������ʤΤǡ��ܿ������ˤϿ������ʤ����Ȥ��ξ夢��ޤ��̤�(��)
