1

我需要一个 DLL 或没有 exe 文件的 .NET 代码来制作渐进式无损 jpeg(.jpg,不是 JPEG 2000 或几个浏览器不支持的 JPEG-LS),因为我使用的是共享主机,我可以'不执行 .exe 文件。我正在使用freeImage应该这样做,但它不会产生无损 jpeg(我已经获得了渐进式 jpeg)。

这是我的 freeImage 代码:

image = FreeImage.Load(FREE_IMAGE_FORMAT.FIF_JPEG, inputPath, FREE_IMAGE_LOAD_FLAGS.JPEG_ACCURATE)
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, image, outputPath, FREE_IMAGE_SAVE_FLAGS.JPEG_OPTIMIZE Or FREE_IMAGE_SAVE_FLAGS.JPEG_PROGRESSIVE)

假设 FREE_IMAGE_SAVE_FLAGS.JPEG_OPTIMIZE 标志使图像无损,但它不起作用。难道我做错了什么?

使用 exe 文件,我可以使用jpegtran解决问题。要获得无损渐进式 jpeg,您只需从 .NET 应用程序或 Web 执行 shell 命令。

如果执行此命令:

jpegtran -copy none -optimize -progressive inputPath.jpg outputPath.jpg

您将获得渐进式无损 jpeg 文件

我已经使用它并且它可以工作,但是我需要在没有 exe 文件的情况下执行它。

4

1 回答 1

1

查看 LibJpeg.Net:http://bitmiracle.com/libjpeg/基本上是 C# 中的 IJG 库。由于它是一个相当低级的库(它必须摆弄 DCT 系数),最好的方法是获取 jpegtrans 源,看看他们是如何在那里做的,并在 LibJpeg.Net 中做同样的事情(函数具有相同的名称,. ..)

EDIT1:您需要使用来自 LibJpeg.Net 的“经典”API。你需要一个解压缩器和压缩器,但不是对图像进行解码和编码,而是要传递 DCT 系数。寻找jpeg_write_coefficientsjpeg_read_coefficients

于 2014-03-05T08:50:17.770 回答