搜索 社区服务 统计排行 帮助
  • 2108阅读
  • 25回复

[调查]Crop&Resize方案

楼层直达
级别: 风云使者
注册时间:
2002-09-11
在线时间:
0小时
发帖:
4791
只看该作者 15楼 发表于: 2006-01-13
你写吧...

人間五十年 下天のうちをくらぶれば 夢幻の如くなり 一度生を得て 滅せぬ者のあるべきか
服务器 ftp://txxz.share.comic.cn 用户名:txxz 密码:share 1线50K可LIST以上服务器提供TX作品下载 有需要而上面没的请PM我 感谢漫网提供服务器
本社聊天催片OX群:10042749 欢迎插入 重口味满载!
级别: 工作组
注册时间:
2002-10-27
在线时间:
0小时
发帖:
1165
只看该作者 16楼 发表于: 2006-01-13
我要是会写就不在这叫了

dgwxx.com
shanque.net
nmm-hd.org
级别: 工作组
注册时间:
2003-08-26
在线时间:
13小时
发帖:
6600
只看该作者 17楼 发表于: 2006-01-13
引用
最初由 大虾 发布
我要是会写就不在这叫了
源代码给我一下,我看看。
msg7086 # gmail DOT com

催片请点此处: http://bbs.popgo.org/bbs/read.php?tid=502402&displayMode=1#19103164
级别: 工作组
注册时间:
2002-10-27
在线时间:
0小时
发帖:
1165
只看该作者 18楼 发表于: 2006-01-14
一直是开源的,已经注释得很详细了:
http://www.dgwxx.cn/nmmbbs/viewthread.php?tid=273

因为HTML混杂在里面,所以读起来可能有些困难。
如果有问题请加我的MSN:dgwxx # hotmail DOT com
sswroom倒是帮我写过一个VB的版本,但是有些毛病……所以就没有放出来

dgwxx.com
shanque.net
nmm-hd.org
级别: 工作组
注册时间:
2003-08-26
在线时间:
13小时
发帖:
6600
只看该作者 19楼 发表于: 2006-01-14
关于你的php代码,给你些建议:
1、有些地方输出的时候,像
echo "横共切:" . $k . ",纵共切:" . $l . ",AE:" . $cc . "
";
可以改用printf()来做,会比较美观可读。

2、function isodd($num)
这个函数太失败啦……
只要 $num % 2 == 1 就是奇数, $num %2 == 0 就是偶数啦……

那个我优化一下给你看看。另外,我试试看用purebasic和c++改写一下

催片请点此处: http://bbs.popgo.org/bbs/read.php?tid=502402&displayMode=1#19103164
级别: 工作组
注册时间:
2003-08-26
在线时间:
13小时
发帖:
6600
只看该作者 20楼 发表于: 2006-01-14
  1. #include
  2. #include
  3. #include
  4. struct solution
  5. {
  6. int hcrop, vcrop;
  7. double ae, absae;
  8. };
  9. solution * sol[625];
  10. int recount = 0;
  11. void usort()
  12. {
  13. int i, j;
  14. solution * temp1;
  15. for(i = 0; i < recount - 1; i++)
  16. for(j = 0; j < recount - i - 1; j++)
  17. if(sol[j]->absae > sol[j+1]->absae)
  18. {
  19. temp1 = sol[j];
  20. sol[j] = sol[j+1];
  21. sol[j+1] = temp1;
  22. }
  23. }
  24. void freeall()
  25. {
  26. int i;
  27. for(i = 0; i < recount; i++)
  28. free(sol[recount]);
  29. recount = 0;
  30. }
  31. int main()
  32. {
  33. int mode, ar, hrev, vrev, hcrop, vcrop, srange, output, c=720, d, k, l, i;
  34. double maxae, factor2, aa, bb, cc, dd; //Ahhh~, i hate these variable names!!!
  35. char filename[200];
  36. FILE * fp;
  37. puts(" Crop & Resize Calculator @ C++");
  38. puts(" by MR, v 0.1\n");
  39. printf("制式\t\t1 - NTSC\t2 - PAL:");
  40. scanf("%d", &mode);
  41. printf("屏幕比例\t1 - 16:9\t2 - 4:3:");
  42. scanf("%d", &ar);
  43. printf("Target 横向分辨率:");
  44. scanf("%d", &hrev);
  45. printf("Target 纵向分辨率:");
  46. scanf("%d", &vrev);
  47. printf("横向最小切边(默认0):");
  48. scanf("%d", &hcrop);
  49. printf("纵向最小切边(默认0):");
  50. scanf("%d", &vcrop);
  51. printf("切边搜寻范围(建议20以内):");
  52. scanf("%d", &srange);
  53. printf("最大可接受AE(0 - 默认1.0):");
  54. scanf("%lf", &maxae);
  55. printf("输出过滤\t1 - All\t2 - Even number crop only:");
  56. scanf("%d", &output);
  57. getchar();
  58. if(maxae < 1e-6)
  59. maxae = 1.0;
  60. if(srange < 0)
  61. srange = 10;
  62. if(mode == 1)
  63. d = 480;
  64. else
  65. d = 576;
  66. if(ar == 1)
  67. factor2 = 0.75;
  68. else
  69. factor2 = 1.0;
  70. bb = (double)hrev / (double)vrev;
  71. for(k = hcrop; k < hcrop + srange; k++)
  72. {
  73. for(l = vcrop; l < vcrop + srange; l++)
  74. {
  75. // NTSC计算公式
  76. if (mode == 1)
  77. aa = ((c - k) * 72. / 79) / ((d - l) * factor2);
  78. // PAL计算公式
  79. else
  80. aa = ((c - k) * 128. / 117) / ((d - l) * factor2);
  81. cc = aa / bb - 1;
  82. dd = fabs(cc);
  83. if(dd < maxae && (output == 1 || output == 2 && k % 2 == 0 && l % 2 == 0))
  84. {
  85. sol[recount] = (solution*)malloc(sizeof(solution));
  86. sol[recount] -> hcrop = k;
  87. sol[recount] -> vcrop = l;
  88. sol[recount] -> ae = cc;
  89. sol[recount] -> absae = dd;
  90. recount++;
  91. }
  92. }
  93. }
  94. usort();
  95. printf("Write to file(ENTER to print on screen):");
  96. gets(filename);
  97. if(filename[0] != 0)
  98. {
  99. // to file
  100. fp = fopen(filename, "w");
  101. fputs("H-Crop,V-Crop,AspectError,Abs AspectError\n", fp);
  102. for(i = 0; i < recount; i++)
  103. fprintf(fp, "%d,%d,%.8lf,%.8lf\n", sol[i]->hcrop, sol[i]->vcrop, sol[i]->ae, sol[i]->absae);
  104. fclose(fp);
  105. puts("Written to file.");
  106. }
  107. else
  108. {
  109. puts("H-Crop\tV-Crop\t Aspect Error\tAbs AspectError");
  110. for(i = 0; i < recount; i++)
  111. printf("%3d\t%3d\t%12.8lf\t%13.8lf\n", sol[i]->hcrop, sol[i]->vcrop, sol[i]->ae, sol[i]->absae);
  112. }
  113. freeall();
  114. printf("Press enter key to exit...");
  115. getchar();
  116. }


C++的版本,可以用Dev-CPP附带的gcc编译器编译。

催片请点此处: http://bbs.popgo.org/bbs/read.php?tid=502402&displayMode=1#19103164
级别: 工作组
注册时间:
2005-05-03
在线时间:
0小时
发帖:
2914
只看该作者 21楼 发表于: 2006-01-20
有一个AVS插件,叫AUTOCROP

Autocrop_autocrop(mode=0) 或
loadplugin("autocrop.dll")
autocrop(mode=0)
级别: 骑士
注册时间:
2005-01-04
在线时间:
0小时
发帖:
1138
只看该作者 22楼 发表于: 2006-01-21
Interlaced YV12 转 Progressive YV12已经有损失了.....
也不在乎什么全程YV12了,差别不是很大.

I've Sound音樂聯盟(点击进入)

[CHN][IFS][eDtoon][TLF][VeryCD]VempX <= eMule的ID,欢迎查看共享文件
~My Blog~
级别: 工作组
注册时间:
2003-12-14
在线时间:
1小时
发帖:
2188
只看该作者 23楼 发表于: 2006-01-22
看到不错的代码 眼睛一亮 收了 = 3=

                        
Please call me "小沙"  ^^ | FalconIA's BASE | BLOG (自家用)                    


级别: 新手上路
注册时间:
2003-12-29
在线时间:
0小时
发帖:
254
只看该作者 24楼 发表于: 2006-01-23
上面那代码是纯C嘛,哪来的"++"

宁可插值,也不采样
级别: 新手上路
注册时间:
2003-12-29
在线时间:
0小时
发帖:
254
只看该作者 25楼 发表于: 2006-01-23
对不起,没看到注释是C++风格的

宁可插值,也不采样
快速回复

限150 字节
上一个 下一个