Archive for the Web/AP全舜 category

12月 2nd, 2006

IEの「名前を付けて画? を保存」

Posted in Web/AP全舜 by tatenaga

 IEの右クリックメニュー「名前を付けて画? を保存」操作をした時、対象画? がjpegやgifであるにも関゜ らず「無? .bmp」として? 存しようとする問題はよく言゜ れています。MSのサポートサイトでも、? 因は? 時ファイル? Temporary Internet Files )の破損であるため、一? Temporary Internet Filesフォルダ内のファイルを削除する対処方? を朏 示しています。

 しかし、IEの「名前を付けて画? を保存」操作仕様が直接サーバから圏 信したファイルを保存するものではなぜ 、単に? 時ファイルから特? のフォルダへのコピー操作であるなら、サーバ側でキャッシュを無効としていた場合にはどうなるか。具? 的に以下のようぜ Apacheで設定している場合です。

<Files ~ "\.(jpg|gif|png)$">
  Header set Pragma no-cache
  Header set Cache-Control no-cache,no-store,must-revalidate
  Header set Expires "Sat, 01 Dec 1990 00:00:00 GMT"
</Files>

 この設定の場合、jpg, gif, pngファイルぜ IEの? 様で? 時ファイルに格? されず、「名前を付けて画? を保存」操作時にやはり「無? .bmp」で? 存しようとします。

 対処方? はいぜ つかあると思いますが、以? のような方? でしょうか・ボ
・「対象をファイルに? 存」する。ただし、IMGタグぜ srcの指定が必要。
ボ CGIで読み込んでからダウンロードHTTPヘッダ(Content-Type, Content-Disposition)とともに出力する

11月 5th, 2006

文字列操作処理の手?

Posted in Web/AP全舜 by tatenaga

文字列操作処理の手本にしているコピーコマンドのソースです。
while内に条件? を付ければいろいろと? 用も可能です。

char *copy(
	char*  chp_dst,       /* (O) 変朏 後文字列 */
	const  char* chp_src  /* (I) 変朏 前文字列 */
){
	int i=0;
	int j=0;

	while( (chp_dst[i] = chp_src[j]) != '\0' ){
		i++;
		j++;
	}
	return chp_dst;
}
10月 31st, 2006

EPSぜ BoundingBox

Posted in Web/AP全舜 by tatenaga

 EPSに代表されるPostScriptファイルでは、ファイル先頭のヘッダ領域ぜ “BoundingBox”と呼ばれる座木 情報を保持している。これを利用しぜ ImageMagick等のライブラリを使用しなぜ ても画? ファイルサイズを圏 得することが可能となる。

 方? としては、文字列「%%BoundingBox:」を検索し、後に? ぜ “左? X座木 左? Y座木 右? X座木 右? Y座木 “の値を圏 得して? き算すれば良い。ただし、単位はポイントとなっているので、必要に? じてミリメートル、ピクセル? の単位に? 朏 する必要がある。また、ヘッダ領域の情報に「%% BoundingBox: (atend)」と? 義されている場合、画? データ最下部にフッタ領域に座標情報が付加されているので注? が必要となる。

st_fp = fopen( chp_file, "rb" );

for ( ;; ){
	chp_fgets = fgets( cha_line, sizeof(cha_line), st_fp);

	// fgetsエラボ /ファイル? 了
	if (chp_fgets == NULL){
		break;
	}
	// 空? を無?
	if ( strlen(cha_line) == 0 ){
	continue;
	}
	// コメント以? は無?
	if ( cha_line[0] != '%' ){
		continue;
	}
	// 「BoundingBox: (atend)」 の場合は無?
	if ( strstr( cha_line, "atend" ) != NULL ){
		continue;
	}
	// BoundingBoxなしは無?
	chp_str = strstr( cha_line, "%%BoundingBox:" );
	if ( chp_str == NULL ){
		continue;
	} else {
		// BoundingBox該?
		in_cnt = sscanf( chp_str, "%s %d %d %d %d", cha_box, &in_x1, &in_y1, &in_x2, &in_y2 );
		if ( in_cnt != 5 ){
			continue;
		}
		break;
	}
}

in_ret = fclose( st_fp );

1pt=1/72inch
1inch=25.4mm
1pt=0.352777778mm