我需要一个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文件的情况下这样做。
答案 0 :(得分:1)
查看LibJpeg.Net:http://bitmiracle.com/libjpeg/它基本上是C#中的IJG库。因为它是一个相当低级别的lib(它必须用来调整DCT系数),最好的方法是获取jpegtrans源代码,看看他们是如何做到的,并在LibJpeg.Net中做同样的事情(函数有相同的名字,。 ..)
<强> EDIT1 强>:
你需要使用LibJpeg.Net的“Classic”API。在那里你需要一个decopmpressor和压缩器,但你想要传递DCT系数,而不是解码和编码图像。查找jpeg_write_coefficients
和jpeg_read_coefficients