< 返回版块

binarytom 发表于 2021-01-09 22:35

qcms

Firefox的库,用于在ICC配置文件之间转换图像数据。

    // Decode the jpeg
    let mut d = jpeg_decoder::Decoder::new(std::fs::File::open("/Users/jrmuizel/Desktop/DSCF2460.jpg").unwrap());
    let mut data = d.decode().unwrap();
    let info = d.info().unwrap();

    // Extract the profile after decode
    let profile = d.icc_profile().unwrap();

    // Create a new qcms Profile
    let input = qcms::Profile::new_from_slice(&profile).unwrap();
    let mut output = qcms::Profile::new_sRGB();
    output.precache_output_transform();

    // Create a transform between input and output profiles and apply it.
    let xfm = qcms::Transform::new(&input, &output, qcms::DataType::RGB8, qcms::Intent::default()).unwrap();
    xfm.apply(&mut data);

    // write the result to a PNG
    let mut encoder = png::Encoder::new(std::fs::File::create("out.png").unwrap(), info.width as u32, info.height as u32);
    encoder.set_color(png::ColorType::Rgb);
    encoder.set_srgb(png::SrgbRenderingIntent::Perceptual);
    let mut writer = encoder.write_header().unwrap();
    writer.write_image_data(&data).unwrap(); // Save

这个库最初是用C编写的,使用c2rust将其转换为Rust,然后重构为更安全、更惯用的Rust。

Github 链接,https://github.com/FirefoxGraphics/qcms/

GTK-RS Channel问题中的多线程处理

你们好,我是一个Rust初学者,作为我的第一个项目,我正在开发一个GTK应用程序使用the Rust's GTK binding。

我有一个跨线程修改小部件的问题。在我的应用程序中,有两个主要线程:

  • 一个默认线程
  • 一个“analizer”线程,它将运行一些cmd命令并修改一些小部件。

文章链接,https://www.reddit.com/r/rust/comments/ktlet6/multithreading_in_gtkrs_channel_problem/

为生锈项目优化CI/CD Pipeline(Gitlab和Docker)

Rust是什么?

Rust是一种类似于C的编程语言(通用),这意味着它是一种编译语言,并且在管理内存等方面具有新的强大功能。酷的东西!rust没有垃圾收集器,这太棒了。

DevOps是什么。。。

文章链接,https://hatembentayeb.hashnode.dev/optimizing-ci-cd-pipeline-for-rust-projects-gitlab-docker


From 日报小组 TOM

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页