0007818
小魚が死んだので下水に流した。
彼女の小さな小さな猫も死んだので下水に流した。


LinkJapan 日記リンク なにしよっかなぁ〜?(休み版)
・読みたい漫画
グルグル、ローゼン、不思議な少年(8巻?)
・やりたいゲーム
戦国猛将3、LOM、ひぐらし、シンフォニア
2017年11月
   1234
567891011
12131415161718
19202122232425
2627282930  



月の日記を
 OR AND
スペースで区切って複数指定可能
* 2016年11月16日(水)
* 2016年10月17日(月) またすこしわかった
* 2016年6月20日(月) すぴさ6巻
* 2016年1月1日(金) 漫画のやつ
* 2015年12月5日(土) つきの光にじゃまされて
* 2015年11月24日(火) ぺらん
* 2015年11月15日(日) 4日?
* 2015年11月14日(土) 11日
* 2015年11月6日(金) 今日
* 2015年11月5日(木) 今日
* 2015年11月3日(火)
* 2015年1月22日(木) とっぺんぱらりら
* 2015年1月22日(木) まろいふでをんとりぬりる
* 2014年11月8日(土) あふん
* 2014年9月22日(月) つぶやいたー
* 2014年7月28日(月) SM
* 2014年5月10日(土) 爆発のために
* 2014年5月5日(月) なんとなく調子に乗っている。
* 2014年5月3日(土) 鬼隠し編
* 2014年4月21日(月) たいしたことないよ
* 2014年4月17日(木) ほやる
* 2014年4月16日(水) ぷれひりあすグリュンデ
* 2014年4月13日(日) 見直した
* 2014年4月13日(日) えんばほ
* 2014年4月2日(水) こまめち
* 2014年3月31日(月) 心機一転
* 2014年3月19日(水) ヴィンランドサガ14巻
* 2014年3月18日(火) ふらめんご
* 2014年3月10日(月) 廃墟
* 2014年3月9日(日) バーチャルボーイ
* 2014年3月8日(土) 文化的象徴
* 2014年3月5日(水) ソバットぅ!!
* 2014年3月4日(火) けっぱり忘れそうになってた【2000】
* 2014年3月2日(日) 嫌いにならないこと
* 2014年2月11日(火) 文化とゲーム
* 2014年2月2日(日) 洗脳搾取なんとやら
* 2014年2月1日(土) 記憶のない日
* 2014年1月21日(火) コブクロ
* 2014年1月20日(月) 黒の兄弟
* 2014年1月4日(土) ドコモメール
* 2014年1月3日(金) 自分のバージョン分け
* 2014年1月1日(水) からくりは簡単、日付いじれる。
* 2000年9月14日(木)

11日
書き忘れてたけど、libtiffによる32bitTiff画像出力がうまくいったので書くよ。

読み込みはデータの形状にもよるし、まあ力技だったが、書き込みは楽だろうと高をくくっていたら、当てが外れた。
32bitだから、4byte文字のintを使えばキャストの必要もなく楽かな、って思ってたけど、なかなかうまくいかんかった。
問題はそもそも必要とされるRPstripやstripMaxの定義が曖昧でいかんともしがたくて。。。
まあ、以下で解決。

RPstrip(TIFFTAG_ROWSPERSTRIP)はstripの高さ、長さ(画素数)の次元を持つ。
IFFDefaultStripSize(lineimage,bit))で画像サイズから求まるデフォルトの値を採用。
stripの幅は画像サイズ(x_max)と等しい。

場合によってはstripに収容されているデータ数がRPstrip*x_maxと等しくなっていない場合がある。
その場合、読み込みに一工夫必要になる。

stripMax()はStripの数であり、無次元。
int型にキャストした、(int)(y_max/RPstrip+0.9)で定義できる。
+0.9は小数点切り上げのため。

stripSizeはstripに収容されるデータの大きさbyte単位。
RPstrip*x_max*(bps/8)で計算できる。

最後のループ
result=TIFFWriteEncodedStrip(lineimage, stripCount, buffer+imageOffset, stripSize))
でstripごとに書き込み。
resultに返す値は書き込みに成功したデータの大きさ、byteの次元。
書き込みに成功したデータの数はresult/(bps/8)、基本的に端以外は=RPstrip*x_maxである。

bufferはポインタであり、コンテナされている2番目のstripの頭のアドレスはbuffer[0]のアドレスから、result/(bps/8)分だけ移動したところである。
依って、imageOffsetという形で、書き込みに成功したデータの全数を記憶しておく。


そのうちどんなダイナミックレンジだろうと読み込み/書き込みできるようにしたいなぁ。

-----------------------------------

#include
#include // mathmatica
#include // read and write
#include // edit the tiff file "gcc ***.c -ltiff -lm"

int image(int x_max, int y_max, int *data){
TIFF *lineimage;
char* linefilename=(char*)malloc(100*sizeof(char));

int pp=0;
for (y = 0; y < y_max; y++){ // direction y
for (x = 0; t < x_max; x++){ // direction x
buffer[pp] = data[x][y];pp++;
}
}

int* buffer;
int bufferSize = (x_max)*(y_max);
if((buffer = (int *) malloc(bufferSize*sizeof(int))) == NULL){ // defined the size of buffer and error check
fprintf(stderr, "Could not allocate enough memory for the uncompressed image\n");
exit(42);
}

int imageOffset=0;
int stripCount, stripSize, stripMax,RPstrip,bit,result;
bps = 32;
sprintf(linefilename,"name.tif");

if((lineimage = TIFFOpen(linefilename, "w")) == NULL){
printf("cannot open\n");
exit(1);
}


TIFFSetField(lineimage, TIFFTAG_BITSPERSAMPLE, bps);
TIFFSetField(lineimage, TIFFTAG_IMAGEWIDTH, x_max);
TIFFSetField(lineimage, TIFFTAG_IMAGELENGTH, y_max);
TIFFSetField(lineimage, TIFFTAG_SAMPLESPERPIXEL, 1); // gray scale
TIFFSetField(lineimage, TIFFTAG_ROWSPERSTRIP, RPstrip = TIFFDefaultStripSize(lineimage,32));
TIFFSetField(lineimage, TIFFTAG_COMPRESSION, COMPRESSION_NONE); // compress the tiff file (CCITTFAX4 etc.)
TIFFSetField(lineimage, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK); // 0->white:PHOTOMETRIC_MINISWHITE 0:->Black:PHOTOMETRIC_MINISBLACK RGB:PHOTOMETRIC_RGB
TIFFSetField(lineimage, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB); // order of datas (Up to bottom:_MSB2LSB, Bottom to up:_LSB2MSB)
TIFFSetField(lineimage, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); // a primary of bitmap is pixcel, or "plane"
TIFFSetField(lineimage, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT); // position of the origin
TIFFSetField(lineimage, TIFFTAG_XRESOLUTION, 72); // bpi of x
TIFFSetField(lineimage, TIFFTAG_YRESOLUTION, 72); // bpi of y
TIFFSetField(lineimage, TIFFTAG_RESOLUTIONUNIT, RESUNIT_NONE); // Unit name _INCH or _CENTIMETER
TIFFSetField(lineimage, TIFFTAG_SOFTWARE,"software");


stripSize = TIFFStripSize(lineimage);
stripMax = RPstrip*x_max*(bps/8);

imageOffset=0;
for (stripCount = 0; stripCount <= stripMax; stripCount++){
if((result = TIFFWriteEncodedStrip(lineimage, stripCount, buffer+imageOffset, stripSize)) == -1){
fprintf(stderr, "Write error on input strip number %d\n", stripCount);
exit(42);
}
imageOffset += result/(bps/8);
}

fprintf(stderr, "%s finished",linefilename);

TIFFClose(lineimage);

////memory release/////
free(data);
free(filename);
free(buffer);
free(linefilename);

return 0;
}
-----------------------------------
2015年11月14日(土) No.2276

Page/ [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]

ひぐらしのなく頃に絆兇亮作CMだよー作り直した。けど重いから外した。
http://higu.biz/nipanipa2/usercms/blogparts/7915/s後のん
http://higu.biz/nipanipa2/usercms/blogparts/115/s 前のん
チャット作ったよ〜
2008ねんがー
さばぷら
元さば夢 元元ひぐらし絆推理所「WHY WHO HOW」
元ひぐらし推理所「ひぐらしぐらし」
現ひぐらし推理所「ひぐらしぐらぐら」
10年8〜9月分目次
コミックダッシュ! kirinkirinkirin の所有コミック

[Admin] [TOP]
shiromuku(cr3)DIARYS version 1.10
CGIレンタル




2年以上日記を保存したい方へ!無料→有料日記データ移行(ご自分で削除した過去の日記も修復可) LinkJapan