小编Fab*_*n K的帖子

使用 Paths.get() 或 Path.resolve() 连接 nio.path

我想知道使用 Paths.get() 和 Path.resolve 之间有什么区别,如下例所示:

public static void main(String[] args) {
    Path p1 = Paths.get("dir1","dir2","file.jpg");
    Path p2 = Paths.get("").resolve("dir1/dir2/file.jpg");

    System.out.println(p1.toString()); // yields: dir1/dir2/file.jpg
    System.out.println(p2.toString()); // yields: dir1/dir2/file.jpg
}
Run Code Online (Sandbox Code Playgroud)

看起来两者的行为相同,但在 Java EE 应用程序中,我目睹了p1将主目录分配为前缀。我找到了 @Aleksandr Dubinsky 对 StackOverflow 问题How to join paths in Java?的回答。,但我不明白引用的javadoc的含义:

请注意,Paths.get() (如其他人建议的那样)没有采用 Path 的重载,并且执行 Paths.get(path.toString(), childPath) 与resolve () 不同。来自 Paths.get() 文档:

请注意,虽然此方法非常方便,但使用它意味着假定引用默认文件系统并限制调用代码的实用性。因此,它不应该在旨在灵活重用的库代码中使用。更灵活的替代方案是使用现有的 Path 实例作为锚点,例如:

Path dir = ...
Path path = dir.resolve("file");
Run Code Online (Sandbox Code Playgroud)

具体来说,我不明白 javadoc 想要说的“将暗示对默认文件系统的假定引用”。

java nio path

7
推荐指数
1
解决办法
3748
查看次数

Libtiff:从像素阵列生成 TIFF/EP Profile 2 原始图像

我正在尝试从任意像素阵列生成 TIFF/EP Profile 2 原始 (.dng) 图像。该像素阵列代表拜耳模式(CFA)。

我研究了 TIFF/EP 文件规范,并通过使用 libtiff,包含了我认为生成完整 .dng 文件所需的所有标签。但是,我无法使用 dcraw 转换创建的文件(dcraw 显示无法解码文件)。

一个问题可能是由两个标签引起的,这两个标签在 TIFF/EP 规范中被声明为强制标签,但似乎并未在 libtiff 中实现:SensingMethod 和 TIFF/EPStandardID 标签。我真的必须包含它们吗(我已经看到示例代码忽略了这些标签,但仍然报告可以正常工作),如果是这样,我如何手动将它们添加到 libtiff 中?此外,设置 SubIFD 标记会产生错误消息“断言失败:*pa<=0xFFFFFFFFUL,文件 tif_dirwrite.c,第 1869 行”

总而言之,我不认为我的问题只是由于这三个标签造成的,而且我相信存在根本性的错误。也许你们中的某个人可以看看我的代码并提供一些线索?我不得不说 libtiff 的文档相当差,所以我的代码受到了极少数示例代码之一的启发:elphel_dng.c

非常感谢!法比安

附言。我将生成的文件上传到Dropbox

C++

#include "tiffio.h"
#include <iostream>
using namespace std;

int main(void)
{
TIFF *tif = TIFFOpen("8bitRaw.dng", "w");

const int sampleperpixel = 1;
const int width = 4;
const int height = 4;

static const short bayerPatternDimensions[] = { 2,2 };
static const …
Run Code Online (Sandbox Code Playgroud)

image libtiff dcraw dng

5
推荐指数
1
解决办法
1845
查看次数

标签 统计

dcraw ×1

dng ×1

image ×1

java ×1

libtiff ×1

nio ×1

path ×1