我正在尝试使用pydicom创建JPEG压缩的DICOM图像。可以在此处找到有关彩色DICOM图像的不错的原始资料,但这主要是理论和C ++。在下面的代码示例中,我在内部创建了一个淡蓝色的省略号output-raw.dcm(未压缩),如下所示:
import io
from PIL import Image, ImageDraw
from pydicom.dataset import Dataset
from pydicom.uid import generate_uid, JPEGExtended
from pydicom._storage_sopclass_uids import SecondaryCaptureImageStorage
WIDTH = 100
HEIGHT = 100
def ensure_even(stream):
# Very important for some viewers
if len(stream) % 2:
return stream + b"\x00"
return stream
def bob_ross_magic():
image = Image.new("RGB", (WIDTH, HEIGHT), color="red")
draw = ImageDraw.Draw(image)
draw.rectangle([10, 10, 90, 90], fill="black")
draw.ellipse([30, 20, 70, 80], fill="cyan")
draw.text((11, 11), "Hello", fill=(255, 255, 0))
return …Run Code Online (Sandbox Code Playgroud) 假设我们有一个使用Facebook的伟大的Immutable.js创建的不可变对象.我想比较使用单个源.map或.filter从单个源生成的两个列表,并确保它们是相同的.在我看来,当使用map/filter时,你正在创建一个与前一个对象无关的新对象.如何使三重平等===工作?它有意义吗?
var list = Immutable.List([ 1, 2, 3 ]);
var list1 = list.map(function(item) { return item; })
var list2 = list.map(function(item) { return item; })
console.log("LIST1 =", list1.toJS()) // [1, 2, 3]
console.log("LIST2 =", list2.toJS()) // [1, 2, 3]
console.log("EQUAL ===?", list1===list2); // false! Why? How?
Run Code Online (Sandbox Code Playgroud)
你可以在这里玩它:http://jsfiddle.net/eo4v1npf/1/
我正在使用React + Redux构建应用程序.我的州有一个列表,其中包含具有以下属性的项目selected:
items: [
{id: 1, selected: true},
{id: 2, selected: false},
{id: 3, selected: false},
{id: 4, …Run Code Online (Sandbox Code Playgroud) 在TypeScript中根据需要标记某些属性的正确方法是什么?假设我们有某个对象,它必须包含id字段,但也可以包含任意数量的其他字段:
interface SomeType {
id: number;
}
let obj: SomeType = { name: "OBJ" }; // GOOD ERROR! We must have `id`
let obj: SomeType = { id: 123 }; // OK
let obj: SomeType = { id: 123, name: "OBJ" }; // BAD ERROR! I just want to add a name
Run Code Online (Sandbox Code Playgroud)
我知道您可以使用问号制作可选属性,如下所示:
interface SomeType {
id: number;
name?: string;
engine?: string;
mother?: string;
}
Run Code Online (Sandbox Code Playgroud)
但我不希望每次都通过添加和混合不相关的东西来修改这个界面.
另一种选择当然是创建一组接口,每个接口扩展主接口,但听起来像很多代码行:
interface SomeType { …Run Code Online (Sandbox Code Playgroud) 我和我的同事正在研究 REST API。我们一直在争论资源/项目的状态应该是字符串还是整数——我们都需要读取、理解和修改该资源(使用单独的应用程序)。由于这是一个非常普遍的主题,谷歌没有帮助解决这个争论。我想知道您的经验是什么以及哪种方式更好。
例如,假设我们有Job资源,可以通过 URI http://example.com/api/jobs/someid访问该资源,并且它具有以下 JSON 表示形式,存储在 NoSQL DB 中:
JOB A:
{
"id": "someid",
"name": "somename",
"status": "finished" // or "created", "failed", "compile_error"
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是 - 也许它应该更像是以下?
JOB B:
{
"id": "someid",
"name": "somename",
"status": 0 // or 1, 2, 3, ...
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我们每个人都必须创建一个地图,用它来理解应用程序逻辑中的状态。但我自己倾向于第一个,因为它更具可读性......您也可以轻松地混淆“0”(字符串)和0(数字)。
然而,由于 API 是被机器使用的,所以可读性并不那么重要。使用数字还有一些其他优点 - 在控制台中使用应用程序时它被广泛接受,并且当您想要包含任意新的失败状态时,它会很有用,例如:
当您有数字时,您不需要为它们组成所有这些字符串名称。那么您认为哪种方式最好?也许我们需要多个字段(这可能会让事情变得有点混乱):
JOB C:
{
"id": "someid",
"name": "somename",
"status": …Run Code Online (Sandbox Code Playgroud) redux ×2
database ×1
dicom ×1
imaging ×1
immutability ×1
immutable.js ×1
interface ×1
javascript ×1
jpeg ×1
json ×1
nosql ×1
pydicom ×1
python ×1
reactjs ×1
rest ×1
typescript ×1