跳转到主要内容

通过CharLS C++库为Python实现的JPEG-LS

项目描述

pyjpegls

注意
这是一个基于原始CharPyLS仓库的分支,创建这个分支是为了能够添加修复和适配,因为原始仓库已经不再维护。本文件的其余部分与原始readme文件相同。

通过CharLS C++库为Python实现的JPEG-LS

我编写了这个接口,以便能够轻松地从我的Python应用程序中访问出色的JPEG-LS无损图像压缩算法。我不需要读取/写入其他人的JPEG-LS图像文件,而是需要压缩应用程序内部的一些数据结构。这些数据在性质上类似于灰度图像,因此利用我在codeplex.com上找到的现有CharLS C++库是一个容易的选择。我最终还为我的一些单元测试添加了一些基本的文件I/O功能,这就是为什么我在下面列出Pillow作为依赖项的原因。

我已经在Windows 7 x64、Windows 8 x64和Ubuntu x64上测试了此代码。请注意,尽管这个包的名字有点奇怪“CharPyLS”,但您应该将其导入为“jpeg_ls”。以下是一个使用此工具将图像压缩到内存中的缓冲区的快速示例。有关更多详细信息,请查看源代码中包含的示例。

    # Read in an image from an existing PNG file.
    fname_img = 'test/image.png'
    data_image = data_io.read_PIL(fname_img)

    # Compress image data to a sequence of bytes.
    data_buffer = jpeg_ls.encode(data_image)

    # Sizes.
    size_png = os.path.getsize(fname_img)
    print('Size of RGB 8-bit image data:  {:n}'.format(len(data_image.tostring())))
    print('Size of PNG encoded data file: {:n}'.format(size_png))
    print('Size of JPEG-LS encoded data:  {:n}'.format(len(data_buffer)))

    # Decompress.
    data_image_b = jpeg_ls.decode(data_buffer)

    # Compare.
    is_same = (data_image == data_image_b).all()
    print('Restored data is identical to original: {:s}'.format(str(is_same)))

上述示例生成的输出应如下所示

Size of RGB 8-bit image data:  5038848
Size of PNG encoded data file: 2409950
Size of JPEG-LS encoded data:  2088357
Restored data is identical to original: True

关于JPEG-LS

  • 来自维基百科文章:JPEG-LS(ISO-14495-1/ITU-T.87)是一种从惠普LOCO算法派生出的被接受的无损图像压缩标准。
  • 来自CharLS codeplex网站:CharLS是对JPEG-LS标准进行优化的无损和近似无损图像压缩的实现。JPEG-LS是一个低复杂度的标准,与JPEG 2000压缩比率相匹配。在速度方面,CharLS优于开源和商业JPEG LS实现。

依赖项

  • Numpy
  • Cython(仅用于构建和安装,不是日常使用)
  • Pillow(PIL的友好分支,在本例中用于文件I/O示例和单元测试)
  • CharLS(源代码作为子文件夹包含)

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分布

pyjpegls-1.4.0.tar.gz (1.2 MB 查看散列值)

上传时间 源代码

构建分布

pyjpegls-1.4.0-cp312-cp312-win_amd64.whl (1.2 MB 查看散列值)

上传时间 CPython 3.12 Windows x86-64

pyjpegls-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB 查看散列值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

pyjpegls-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB 查看散列值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

pyjpegls-1.4.0-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

pyjpegls-1.4.0-cp312-cp312-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86-64

pyjpegls-1.4.0-cp311-cp311-win_amd64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

pyjpegls-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

pyjpegls-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

pyjpegls-1.4.0-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

pyjpegls-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

pyjpegls-1.4.0-cp310-cp310-win_amd64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

pyjpegls-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

pyjpegls-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

pyjpegls-1.4.0-cp310-cp310-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

pyjpegls-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

pyjpegls-1.4.0-cp39-cp39-win_amd64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

pyjpegls-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

pyjpegls-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

pyjpegls-1.4.0-cp39-cp39-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pyjpegls-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

pyjpegls-1.4.0-cp38-cp38-win_amd64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

pyjpegls-1.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

pyjpegls-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.7 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

pyjpegls-1.4.0-cp38-cp38-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

pyjpegls-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86_64

支持者