标签: compression

SharpLibZip:添加没有路径的文件

我正在使用以下代码,使用SharpZipLib库将文件添加到.zip文件中,但每个文件都以其完整路径存储.我只需要将文件存储在.zip文件的"root"中.

string[] files = Directory.GetFiles(folderPath);
using (ZipFile zipFile = ZipFile.Create(zipFilePath))
{
     zipFile.BeginUpdate();
     foreach (string file in files)
     {
          zipFile.Add(file);
     }
     zipFile.CommitUpdate();
}
Run Code Online (Sandbox Code Playgroud)

在提供的文档中,我找不到任何关于此选项的信息.由于这是一个非常受欢迎的图书馆,我希望有人读这篇文章可能会有所了解.

compression sharpziplib

14
推荐指数
2
解决办法
8132
查看次数

.NET使用与加载时相同的质量保存jpeg

我有一个大炮数码相机,我把它设置为拍摄超细质量的照片,它输出一个3兆的.jpg文件.如果我在ASP.NET中加载它(这有助于更改它的dpi分辨率或裁剪它或whaterver)

imgPicture = Image.FromFile(Config.WorkDirectory + this.TempPhotoName);
bmpPicture = new Bitmap(imgPicture);
Run Code Online (Sandbox Code Playgroud)

然后我再次保存它:

bmpModified.Save(Config.WorkDirectory + this.TempPhotoName,System.Drawing.Imaging.ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)

它输出的jpg大小只有700KB左右.质量下降.

我也试过像这样保存它:

bmpPicture.Save(Config.WorkDirectory + this.TempPhotoName, codecJpeg, encparams);
Run Code Online (Sandbox Code Playgroud)

codecJpeg是哪里的

ImageCodecInfo codecJpeg = this.getEncoderInfo("image/jpeg");


    private ImageCodecInfo getEncoderInfo(string mimeType)
    {
        // Get image codecs for all image formats
        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

        // Find the correct image codec
        for (int i = 0; i < codecs.Length; i++)
            if (codecs[i].MimeType == mimeType)
                return codecs[i];
        return null;
    }
Run Code Online (Sandbox Code Playgroud)

和encparams:

EncoderParameters encparams = new EncoderParameters(1);
encparams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 97L);
Run Code Online (Sandbox Code Playgroud)

这样,尺寸(我怀疑质量)也保持不变,但我手工输入质量.

我想问一下: …

c# compression jpeg bitmap save

14
推荐指数
1
解决办法
7428
查看次数

14
推荐指数
2
解决办法
1万
查看次数

如何使用Java压缩PNG图像

嗨,我想知道Java中是否有任何方法可以减少作为BufferedImage加载的图像大小(使用任何类型的压缩),并将保存为PNG.

也许是某种png imagewriteparam?我没有找到任何有用的东西,所以我卡住了.

下面是一个示例如何加载和保存图像

public static BufferedImage load(String imageUrl) {         
    Image image = new ImageIcon(imageUrl).getImage();
    bufferedImage = new BufferedImage(image.getWidth(null),
                                                    image.getHeight(null),
                                                    BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2D = bufferedImage.createGraphics();
    g2D.drawImage(image, 0, 0, null);
    return bufferedImage;
}

public static void storeImageAsPng(BufferedImage image, String imageUrl) throws IOException {
    ImageIO.write(image, "png", new File(imageUrl));
}
Run Code Online (Sandbox Code Playgroud)

java compression png

14
推荐指数
2
解决办法
3万
查看次数

谷歌PageSpeed和ImageMagick JPG压缩

鉴于用户上传的图像,我需要创建它的各种缩略图,以便在网站上显示.我正在使用ImageMagick并试图让Google PageSpeed感到高兴.不幸的是,无论quality我在convert命令中指定了什么值,PageSpeed仍然能够建议进一步压缩图像.

请注意http://www.imagemagick.org/script/command-line-options.php?ImageMagick=2khj9jcl1gd12mmiu4lbo9p365#quality提到:

对于JPEG ...图像格式,质量为1 [提供]最低图像质量和最高压缩....

我实际上甚至测试过使用1来压缩图像(虽然它产生了无法使用的图像),而PageSpeed仍然建议我仍然可以通过"无损压缩"图像来优化这种图像.我不知道如何使用ImageMagick压缩图像.有什么建议?

这是测试我所说的内容的快速方法:

assert_options(ASSERT_BAIL, TRUE);

// TODO: specify valid image here
$input_filename = 'Dock.jpg';

assert(file_exists($input_filename));

$qualities = array('100', '75', '50', '25', '1');
$geometries = array('100x100', '250x250', '400x400');

foreach($qualities as $quality)
{
    echo("<h1>$quality</h1>");
    foreach ($geometries as $geometry)
    {
        $output_filename = "$geometry-$quality.jpg";

        $command = "convert -units PixelsPerInch -density 72x72 -quality $quality -resize $geometry $input_filename $output_filename";
        $output  = array();
        $return  = 0;
        exec($command, $output, $return);

        echo('<img src="' . $output_filename . '" …
Run Code Online (Sandbox Code Playgroud)

compression jpeg imagemagick image-processing pagespeed

14
推荐指数
1
解决办法
9753
查看次数

如何压缩HttpWebRequest POST

我试图将数据发布到接受压缩数据的服务器.下面的代码工作正常,但它是未压缩的.我没有使用压缩或Gzip beofre,所以任何帮助都是适当的.

HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
  request.Timeout = 600000;
  request.Method = verb;  // POST    
  request.Accept = "text/xml";

  if (!string.IsNullOrEmpty(data))
  {
    request.ContentType = "text/xml";        

    byte[] byteData = UTF8Encoding.UTF8.GetBytes(data);
    request.ContentLength = byteData.Length;       

    // Here is where I need to compress the above byte array using GZipStream

    using (Stream postStream = request.GetRequestStream())
    {
      postStream.Write(byteData, 0, byteData.Length);         
    }
  }      

  XmlDocument xmlDoc = new XmlDocument();
  HttpWebResponse response = null;
  StreamReader reader = null;
  try
  {
    response = request.GetResponse() as HttpWebResponse;
    reader = new …
Run Code Online (Sandbox Code Playgroud)

c# compression httpwebrequest

14
推荐指数
3
解决办法
1万
查看次数

ZLIB解压缩 - 客户端

我作为" ZLIB "压缩输入流接收数据.

使用Javascript/Ajax/JQuery,我需要在客户端解压缩它.

有办法吗?请帮忙.

我已经在JAVA中使用了这个,如下所示,但需要在客户端执行此操作.

url = new URL(getCodeBase(), dataSrcfile); 
URLConnection urlConn = url.openConnection();
urlConn.setUseCaches(false); 
InputStream in = urlConn.getInputStream();
InflaterInputStream inflate = new InflaterInputStream(in);
InputStreamReader inputStreamReader = new InputStreamReader(inflate);
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufReader = new BufferedReader(inputStreamReader);
// Read until no more '#'
int i = 0;
int nHidden = 0;
String line1;
do //------------------------Parsing Starts Here
{
    line1 = bufReader.readLine();
.............
...... so on
Run Code Online (Sandbox Code Playgroud)

javascript compression zlib

14
推荐指数
3
解决办法
4万
查看次数

在将它们放入redis之前压缩字符串 - 这有意义吗?

更详细一点:我们已经尝试充分利用zipmaps,ziplists等,我想知道这些表示是否已经压缩,或者只是序列化的哈希和列表; 压缩会显着减少内存使用量吗?

此外,应用服务器层的压缩开销是否会因网络使用率降低而抵消?StackOverflow的经验表明它有什么意义吗?

简而言之,对于短弦和长弦都有意义吗?

compression redis

14
推荐指数
3
解决办法
9462
查看次数

GZIPOutputStream:提高压缩级别

java.util.zip.GZIPOutputStream没有为其底层的压缩级别提供构造函数参数或setter Deflater.

有办法解决这个问题,如所描述这里,例如:

GZIPOutputStream gzip = new GZIPOutputStream(output) {
    {
        this.def.setLevel(Deflater.BEST_COMPRESSION);
    }
};
Run Code Online (Sandbox Code Playgroud)

我使用此GZIPped 10G文件,与使用预设相比,它的大小没有减少一位 DEFAULT_COMPRESSION.

这个问题答案是,在某些情况下,设置级别可能无法按计划运行.为了确保,我还尝试创建一个新的:Deflater

this.def = new Deflater(Deflater.BEST_COMPRESSION, true);
Run Code Online (Sandbox Code Playgroud)

但是文件大小不会减少......

他们没有提供访问Deflater级别的原因吗?

或者上面的代码示例有问题吗?

deflater级别是否有效?

编辑:感谢您的评论.

  1. 文件可以进一步压缩吗?

    它是一个UTF-8文本文件,使用默认压缩从10G压缩到10M.因此,在不知道压缩级别的细节的情况下,我估计它可以进一步压缩.

  2. DEFAULT_COMPRESSION和之间的时差BEST_COMPRESSION

    我没有时间创造真正可靠的数据.但是我执行了每个压缩级别大约五次的代码,两者大约需要相同的时间(2分钟+/- 5秒).

  3. 文件大小gzip -v9?gzip创建的文件比java创建的文件小15KB.因此,对于我的具体用例,不值得再深入研究这个主题.

但是,上述三个基本问题仍然存在.有没有人使用更高的压缩级别成功减少文件GZIPOutputStream

java compression deflate

14
推荐指数
2
解决办法
1万
查看次数

如何创建最小尺寸(空)的zip文件,它有22B?

我试图用文件解决一些安全问题,其MD5哈希是76cdb2bad9582d23c1f6f4d868218d6c.

我没有该文件,但基于互联网MD5搜索,我认为,它是最小尺寸的zip文件.我找到了一个例子,其内容与最小尺寸的zip文件完全相同.

是否可以使用Linux(或Windows)命令创建此类最小大小的zip文件(22 B)?

顺便说一句:最近,我用gzip文件解决了类似的任务: gzip -n EmptyFileName

linux windows compression zip

14
推荐指数
2
解决办法
1万
查看次数