GVKun编程网logo

如何检查tiff是否使用TiffBitmapDecoder索引的颜色空间?(tiff查看)

18

如果您想了解如何检查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查看)

如何检查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 (构造、二进制)

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) 为空

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

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

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等相关知识,可以在本站进行查询。

本文标签: