如果您想了解如何检查tiff是否使用TiffBitmapDecoder索引的颜色空间?的相关知识,那么本文是一篇不可错过的文章,我们将对tiff查看进行全面详尽的解释,并且为您提供关于AtCoderA
如果您想了解如何检查tiff是否使用TiffBitmapDecoder索引的颜色空间?的相关知识,那么本文是一篇不可错过的文章,我们将对tiff查看进行全面详尽的解释,并且为您提供关于AtCoder AGC031C Differ By 1 Bit (构造、二进制)、Bitmap.BitmapFactory.decodeFile (path) 为空、BitmapFactory.decodeStream()获取bitmap返回null、build设R:–with-libtiff不启用TIFFfunction的有价值的信息。
本文目录一览:- 如何检查tiff是否使用TiffBitmapDecoder索引的颜色空间?(tiff查看)
- AtCoder AGC031C Differ By 1 Bit (构造、二进制)
- Bitmap.BitmapFactory.decodeFile (path) 为空
- BitmapFactory.decodeStream()获取bitmap返回null
- build设R:–with-libtiff不启用TIFFfunction
如何检查tiff是否使用TiffBitmapDecoder索引的颜色空间?(tiff查看)
var multiTiff = new TiffBitmapDecoder(tiffImgStream,BitmapCreateOptions.PreservePixelFormat,BitmapCacheOption.Default);
我可以使用FormatConvertedBitmap类来转换像素格式,但首先我怎么能检查每个帧是在这个多tiff索引的颜色空间?
应用程序当前closuresclosures窗口提示
如何在Windows 8 Consumer Preview中使用TcpClient
使用摄像头作为PC中的环境光线传感器
在目录中search特定的文件名
在Linux上的“代码”。 如何和prereqs编译.NET 4.5..4.6核心/便携式库或可执行文件从Linux?
TaW的评论是正确的。 TIFF页面中调色板的存在是该页面被颜色索引的一个很好的指示器。 你可以使用这个代码:
for (int frameNumber = 0; frameNumber < multiTiff.Frames.Count; ++frameNumber) if (multiTiff.Frames[frameNumber].Palette == null) MessageBox.Show("Not indexed"); else MessageBox.Show("indexed");
AtCoder AGC031C Differ By 1 Bit (构造、二进制)
哎呀这个C怎么比B还水。。。。(我现在大概也就会做点这种水题了吧)
题目链接
https://atcoder.jp/contests/agc031/tasks/agc031_c
题目大意
符号约定: $count(x)$表示整数$x$在二进制表示下$1$的个数。“二进制表示下第$x$位”表示位权为$2^x$的位。数组下标全部从0开始
给定$N,A,B$, 求构造一个$[0,2^N-1]$的排列$p$, 满足$p_0=A, p_{2^N-1}=B$, 对于任何$i\in[1,2^N-1]$, $count(p_i\ xor\ p_j)=1$.
$1\le N\le 17$
题解
注: 这道题“二进制位相差$1$个”的这个条件,我们可以用图形象地表示出来,就是一个$n$维立方体顶点和棱的几何结构。这样画出来也许有助于理解本题。
首先观察到一些结论。
(1) 如果一个排列$p$是合法的,那么把$p$中的每个元素异或一个正整数$x$之后得到排列$p''$,排列$p''$仍然是合法的。
太显然,不证了。
据此,我们可以令$B=B\ xor\ A$, 然后构造一个$p$满足$p_0=0, p_{2^N-1}=B$, 最后把答案序列全部$xor\ A$
(2) 能构造出以$0$开始以$B$结束的合法排列当且仅当$count(B)\equiv 1(\mod 2)$
证明: $|count(p_i)-count(p_{i-1})|=1$, 故$count(p_{2^N-1})$为奇数。必要性得证。
充分性?我们可以直接按以下方案进行构造
假设我们要解决问题$(n,b)$ (表示大小为$n$起始点为$0$终止点为$b$)
分类讨论$b$二进制表示下第$(n-1)$位
若为$1$, 则我们先在$[0,2^{n-1}-1]$内构造一个起始点为$0$终止点为$1$的排列(递归调用问题$(n-1,1)$),然后从$1$这个点一步跳到$2^{n-1}+1$, 再构造一个$[2^{n-1},2^n-1]$的起始点为$2^{n-1}+1$终止点为$b$的排列。这一部分可以递归调用问题$(n-1,b\ xor\ (2^{n-1}+1))$然后把生成的排列每个位置都异或$2^{n-1}+1$解决。
若为$0$, 情况稍有复杂。我们依然是构造两个排列,第一个排列$p_1$由问题$(n-1,a)$生成, 而我们希望在排列$p_1$中塞入另一个排列,而使得新排列仍然合法。考虑$p_1[0]$和$p_1[1]$ (其中$p_1[0]$显然为$0$), 构造一个排列$p_2$值域为$[2^{n-1},2^n-1]$且起始于$2^{n-1}$终止于$p_1[1]\ xor\ 2^{n-1}$,这一部分可以通过调用问题$(n-1,p_1[1])$然后给生成排列的每个元素都加上$2^{n-1}$完成。然后我们把$p_2$接在$p_1[0]$和$p_1[1]$之间,它就合法了。
时间复杂度$T(n)=2T(n-1)+O(2^n)$, 解得$T(n)=O(2^nn)$
说了这么多,可能不太清楚。。后面我举个例子:(仅展开模拟第一层递归)
例子1: 问题(4,13)的解决
判断出为第一种情况(第3位为1)
首先构造问题(3,1)的排列: 0 4 5 7 6 2 3 1
然后构造问题(3,4)的排列: 0 2 3 1 5 7 6 4,其中4=13 xor 9, 9=2^3+1
问题(3,4)的排列每个数xor 9之后可得: 9 11 10 8 12 14 15 13
前后拼接即可得: 0 4 5 7 6 2 3 1 9 11 10 8 12 14 15 13就是答案
例子2: 问题(4,7)的解决
判断出为第二种情况(第3位为0)
首先构造问题(3,7)的排列p1: 0 2 3 1 5 4 6 7, 发现p1[1]是2
然后构造问题(3,2)的排列: 0 4 6 7 5 1 3 2, 然后每个数+8后可得8 12 14 15 13 9 11 10
然后把这个以8开头以10结束的排列插在p1的0和2之间,得到0 8 12 14 15 13 9 11 10 2 3 1 5 4 6 7就是答案
代码
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int N = 17;
int ans[(1<<N)+3];
int cnt[(1<<N)+3];
int tmp[(1<<N)+3];
int n,A,B;
void solve(int x,int a,int ret[])
{
if(x==0) {ret[0] = 0; return;}
if(x==1) {ret[0] = 0; ret[1] = 1; return;}
if(a&(1<<(x-1)))
{
solve(x-1,1,ret);
solve(x-1,a^((1<<(x-1))+1),ret+(1<<(x-1)));
for(int i=(1<<(x-1)); i<(1<<x); i++) ret[i] = ret[i]^((1<<(x-1))+1);
}
else
{
solve(x-1,a,ret);
solve(x-1,ret[1],ret+(1<<(x-1)));
for(int i=(1<<(x-1)); i<(1<<x); i++) ret[i] = ret[i]^(1<<(x-1));
tmp[0] = ret[0]; for(int i=0; i<(1<<(x-1)); i++) tmp[i+1] = ret[i+(1<<(x-1))];
for(int i=((1<<(x-1))+1); i<(1<<x); i++) tmp[i] = ret[i-(1<<(x-1))];
for(int i=0; i<(1<<x); i++) ret[i] = tmp[i];
}
}
int main()
{
scanf("%d%d%d",&n,&A,&B); B^=A;
for(int i=1; i<(1<<n); i++) cnt[i] = cnt[i>>1]+(i&1);
if((cnt[B]&1)==0) {puts("NO"); return 0;}
puts("YES");
solve(n,B,ans);
for(int i=0; i<(1<<n); i++) ans[i]^=A;
for(int i=0; i<(1<<n); i++) printf("%d ",ans[i]);
return 0;
}
Bitmap.BitmapFactory.decodeFile (path) 为空
错误描述:
String path=photoPath + photoPathimage;
if (new File(path).exists()) {
bm = BitmapFactory.decodeFile(path);
}
Bitmap take = ResizeBitmap(bm, 300);
v_addimage.setImageBitmap(take);
bm.recycle();//太大记得回收
判断文件存在,但是 bm 一直返回 null
网上解决办法 增加文件读写权限
private void getPermission() {
PackageManager pm = getPackageManager();
boolean permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.CAMERA", "com.zhengyuan.learningtakephoto"));
if (!permission) {
//没有权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.CAMERA}, 15);
}
}
permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_EXTERNAL_STORAGE", "com.zhengyuan.learningtakephoto"));
if (!permission) {
//没有权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 15);
}
}
permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.WRITE_EXTERNAL_STORAGE", "com.zhengyuan.learningtakephoto"));
if (!permission) {
//没有权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 15);
}
}
}
试了下 好像并不怎么行。
使用如下动态授权权限,进入会提示用户是否授权写入权限,确认就可以操作文件了。
//TODO 设置读写权限
if (Build.VERSION.SDK_INT >= 23) {
int REQUEST_CODE_CONTACT = 101;
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
//验证是否许可权限
for (String str : permissions) {
if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
//申请权限
this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
}
}
}
BitmapFactory.decodeStream()获取bitmap返回null
正常的图片缩放代码如:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
arg1.compress(Bitmap.CompressFormat.JPEG, 100, baos);//arg1为传进来的原始bitmap
baos.toByteArray();
InputStream is = new ByteArrayInputStream(baos.toByteArray());
//进行缩放
BitmapFactory.Options newOpts = new BitmapFactory.Options();
// 开始读入图片,此时把options.inJustDecodeBounds 设回true了
newOpts.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeStream(is,null,newOpts);// 此时返回bm为空
newOpts.inJustDecodeBounds = false;
int w = newOpts.outWidth;
int h = newOpts.outHeight;
// 现在主流手机比较多是800*480分辨率,所以高和宽我们设置为
float hh = 100f;// 这里设置高度为800f
float ww = 100f;// 这里设置宽度为480f
// 缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可
int be = 1;// be=1表示不缩放
if (w > h && w > ww) {// 如果宽度大的话根据宽度固定大小缩放
be = (int) (newOpts.outWidth / ww);
} else if (w < h && h > hh) {// 如果高度高的话根据宽度固定大小缩放
be = (int) (newOpts.outHeight / hh);
}
if (be <= 0)
be = 1;
newOpts.inSampleSize = 2;// 设置缩放比例
// 重新读入图片,注意此时已经把options.inJustDecodeBounds 设回false了
bitmap = BitmapFactory.decodeStream(is, null, newOpts);
最后取得bitmap竟然为空,百思不得起解,然后将bitmap获取方式改为BitmapFactory.decodeByteArray(baos.toByteArray(), 0, baos.toByteArray().length, newOpts)就能获取到了,这个真难道是android的一个bug?
build设R:–with-libtiff不启用TIFFfunction
从源代码编译R-3.3.2 。 我的标志包括--with-libtiff 。 它们是: ./configure --with-system-tre --with-blas --with-lapack --with-libtiff --enable-R-shlib --enable-lto --prefix=/opt/new.R
我有libtiff4和libtiff4-dev 。 然而:
R is Now configured for i686-pc-linux-gnu Source directory: . Installation directory: /opt/new.R C compiler: gcc -g -O2 Fortran 77 compiler: f95 -g -O2 C++ compiler: g++ -g -O2 C++11 compiler: g++ -std=c++11 -g -O2 Fortran 90/95 compiler: gfortran -g -O2 Obj-C compiler: gcc -g -O2 -fobjc-exceptions Interfaces supported: X11,tcltk External libraries: readline,BLAS(generic),LAPACK(generic),curl Additional capabilities: PNG,JPEG,NLS,cairo,ICU Options enabled: shared R library,R profiling,strict barrier Capabilities skipped: TIFF Options not enabled: shared BLAS,memory profiling Recommended packages: yes
TIFFfunction已被跳过。 为什么,我如何强制它被启用?
编译的c脚本只能保持打开几分之一秒
在构build期间如何测量cpu,内存和磁盘使用情况?
如何使GNU /停止取消引用到目录的符号链接
错误build立cordova windows8
是否有可能build立一个distcc的Linux机器来build立我的XCode项目?
Javascript编译器/压缩器(Windows GUI)
如何加快在Linux的编译时间
崇高文本3 – 编译程序并在terminal中运行
代码块,C ++构build:权限被拒绝collect2.exe
为什么function的性能不同,当我分别编译和链接?
我有同样的问题。 R配置脚本使用pkg-config测试tiff是否存在,但是在失败时不提供任何反馈。
我通过设置PKG_CONfig环境变量来指向包含文件libtiff-4.pc的目录来解决这个libtiff-4.pc 。
今天关于如何检查tiff是否使用TiffBitmapDecoder索引的颜色空间?和tiff查看的分享就到这里,希望大家有所收获,若想了解更多关于AtCoder AGC031C Differ By 1 Bit (构造、二进制)、Bitmap.BitmapFactory.decodeFile (path) 为空、BitmapFactory.decodeStream()获取bitmap返回null、build设R:–with-libtiff不启用TIFFfunction等相关知识,可以在本站进行查询。
本文标签: