我正在使用以下代码,使用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)
在提供的文档中,我找不到任何关于此选项的信息.由于这是一个非常受欢迎的图书馆,我希望有人读这篇文章可能会有所了解.
我有一个大炮数码相机,我把它设置为拍摄超细质量的照片,它输出一个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)
这样,尺寸(我怀疑质量)也保持不变,但我手工输入质量.
我想问一下: …
疯狂的克里斯滕森得到一个到00amyWGct0y_ze4lIsj2Mw
它可以小于那个吗?
嗨,我想知道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) 鉴于用户上传的图像,我需要创建它的各种缩略图,以便在网站上显示.我正在使用ImageMagick并试图让Google PageSpeed感到高兴.不幸的是,无论quality我在convert命令中指定了什么值,PageSpeed仍然能够建议进一步压缩图像.
对于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) 我试图将数据发布到接受压缩数据的服务器.下面的代码工作正常,但它是未压缩的.我没有使用压缩或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) 我作为" 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) 更详细一点:我们已经尝试充分利用zipmaps,ziplists等,我想知道这些表示是否已经压缩,或者只是序列化的哈希和列表; 压缩会显着减少内存使用量吗?
此外,应用服务器层的压缩开销是否会因网络使用率降低而抵消?StackOverflow的经验表明它有什么意义吗?
简而言之,对于短弦和长弦都有意义吗?
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级别是否有效?
编辑:感谢您的评论.
文件可以进一步压缩吗?
它是一个UTF-8文本文件,使用默认压缩从10G压缩到10M.因此,在不知道压缩级别的细节的情况下,我估计它可以进一步压缩.
DEFAULT_COMPRESSION和之间的时差BEST_COMPRESSION?
我没有时间创造真正可靠的数据.但是我执行了每个压缩级别大约五次的代码,两者大约需要相同的时间(2分钟+/- 5秒).
文件大小gzip -v9?gzip创建的文件比java创建的文件小15KB.因此,对于我的具体用例,不值得再深入研究这个主题.
但是,上述三个基本问题仍然存在.有没有人使用更高的压缩级别成功减少文件GZIPOutputStream?
我试图用文件解决一些安全问题,其MD5哈希是76cdb2bad9582d23c1f6f4d868218d6c.
我没有该文件,但基于互联网MD5搜索,我认为,它是最小尺寸的zip文件.我找到了一个例子,其内容与最小尺寸的zip文件完全相同.
是否可以使用Linux(或Windows)命令创建此类最小大小的zip文件(22 B)?
顺便说一句:最近,我用gzip文件解决了类似的任务: gzip -n EmptyFileName
compression ×10
c# ×2
java ×2
jpeg ×2
bitmap ×1
deflate ×1
friendly-url ×1
guid ×1
imagemagick ×1
javascript ×1
linux ×1
pagespeed ×1
png ×1
redis ×1
save ×1
sharpziplib ×1
windows ×1
zip ×1
zlib ×1