我正在研究流行的压缩算法是如何工作的,所以我可以实现自己的zip归档.关于拉链的确切运作方式是否有任何资源?
我正在尝试用UIImagePickerController压缩用户摄像头拍摄的视频(不是现有的视频,而是一个即时的视频)上传到我的服务器并花费少量时间这样做,所以较小的尺寸是理想的而不是30-新品质相机45毫升.
这是在iOS 8中使用swift进行压缩的代码,它压缩得非常好,我从35 mb轻松到2.1 mb.
func convertVideo(inputUrl: NSURL, outputURL: NSURL)
{
//setup video writer
var videoAsset = AVURLAsset(URL: inputUrl, options: nil) as AVAsset
var videoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0] as AVAssetTrack
var videoSize = videoTrack.naturalSize
var videoWriterCompressionSettings = Dictionary(dictionaryLiteral:(AVVideoAverageBitRateKey,NSNumber(integer:960000)))
var videoWriterSettings = Dictionary(dictionaryLiteral:(AVVideoCodecKey,AVVideoCodecH264),
(AVVideoCompressionPropertiesKey,videoWriterCompressionSettings),
(AVVideoWidthKey,videoSize.width),
(AVVideoHeightKey,videoSize.height))
var videoWriterInput = AVAssetWriterInput(mediaType: AVMediaTypeVideo, outputSettings: videoWriterSettings)
videoWriterInput.expectsMediaDataInRealTime = true
videoWriterInput.transform = videoTrack.preferredTransform
var videoWriter = AVAssetWriter(URL: outputURL, fileType: AVFileTypeQuickTimeMovie, error: nil)
videoWriter.addInput(videoWriterInput)
var videoReaderSettings: [String:AnyObject] = [kCVPixelBufferPixelFormatTypeKey:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange]
var videoReaderOutput = AVAssetReaderTrackOutput(track: videoTrack, outputSettings: videoReaderSettings)
var …Run Code Online (Sandbox Code Playgroud) 我已经实现了一种称为离散余弦变换的图像/视频变换技术.该技术用于MPEG视频编码.我的算法基于以下URL中提出的想法:
http://vsr.informatik.tu-chemnitz.de/~jan/MPEG/HTML/mpeg_tech.html
现在我可以变换黑白图像的8x8部分,例如:
0140 0124 0124 0132 0130 0139 0102 0088 0140 0123 0126 0132 0134 0134 0088 0117 0143 0126 0126 0133 0134 0138 0081 0082 0148 0126 0128 0136 0137 0134 0079 0130 0147 0128 0126 0137 0138 0145 0132 0144 0147 0131 0123 0138 0137 0140 0145 0137 0142 0135 0122 0137 0140 0138 0143 0112 0140 0138 0125 0137 0140 0140 0148 0143
在这个图像中,右上角有所有重要信息.转换后的块看起来像这样:
1041 0039 -023 0044 0027 0000 0021 -019 -050 0044 -029 0000 …
我有一个应用程序,我正在阅读和写入数小块数据(几百字节)数亿次.我想基于示例数据文件生成压缩字典,并在读取和写入小块时永远使用该字典.我倾向于LZW压缩算法.维基百科页面(http://en.wikipedia.org/wiki/Lempel-Ziv-Welch)列出了压缩和解压缩的伪代码.修改它看起来相当简单,因此字典创建是一个单独的代码块.所以我有两个问题:
谢谢.
更新: 现在我认为理想的情况是找到一个库,让我将字典与压缩数据分开存储.这样的事情存在吗?
更新: 我最终获取了http://www.enusbaum.com/blog/2009/05/22/example-huffman-compression-routine-in-c中的代码 并进行了调整.我是该页面评论中的克里斯.我通过电子邮件将我的mod发回给了博客作者,但我还没有收到回复.我用这个代码看到的压缩率并不令人印象深刻.也许这是由于8位树的大小.
更新: 我将其转换为16位,压缩效果更好.它也比原始代码快得多.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Book.Core
{
public class Huffman16
{
private readonly double log2 = Math.Log(2);
private List<Node> HuffmanTree = new List<Node>();
internal class Node
{
public long Frequency { get; set; }
public byte Uncoded0 { get; set; }
public byte Uncoded1 { get; set; }
public uint Coded { get; set; }
public int CodeLength { …Run Code Online (Sandbox Code Playgroud) 我们目前正在为客户创建一个设备,它将从PC应用程序中获取一块数据(例如,5-10KB).这有点简化,因此假设数据必须经过多次传递和解压缩,而不是每年一次.通信通道非常非常慢,因此我们希望事先压缩数据,传递给设备并让数据解压缩到内部闪存.然而,设备本身在微控制器上运行,该控制器不是很快并且没有大量内存.它有足够的闪存来存储结果,并且可以在接收时解压缩数据块,但它可能没有足够的RAM来存储整个压缩或未压缩(甚至两个!)数据块.当然,它没有操作系统或其他奢侈品.
这意味着我们需要一个足够快速的无压缩算法,它不会占用大量内存.压缩可能是缓慢而丑陋的,因为我们在PC端进行压缩.C或.NET代码首选,但压缩,以使事情更容易.解压缩代码应该在C中,因为某人不太可能为我们的控制器提供ASM优化版本.
我们发现LZO对我们来说几乎是完美的,但它默认有一个所谓的"免费"许可证(GPL),这使得它对我们的客户来说完全无法使用.作者说,商业许可证可以根据要求提供,但不幸的是他目前无法访问(出于非技术原因,如他网站上的新闻所说).
我找到了一些其他的库,包括zlib的puff.c,我们还在调查,但我想我会问你的经验:
鉴于解压缩设备的资源非常有限,需要源代码和商业许可证,您建议将哪种压缩算法和/或库用于嵌入式目的?
我正在开展一个侧面项目,现在涉及编码维基百科页面之间的所有链接.我已将此信息写入磁盘,但编码此图结构所需的内存使用量非常荒谬 - 有数百万个节点和数千万个链接.虽然这种结构确实适合记忆,但我不知道如果有十亿个链接或十亿页,我会怎么做.
我的问题是 - 有没有一种方法可以无损压缩一个太大的图形以适应内存,以便它适合内存?如果没有,是否有一个好的有损算法,对于某些"结构"的定义,不会从原始图中丢失太多的结构?
language-agnostic compression algorithm graph data-structures
Google页面建议您缩小HTML,即删除所有不必要的空格.
CodeIgniter确实具有giziping输出的功能,或者可以通过.htaccess.但我仍然想从最终的HTML输出中删除不必要的空格.
我用这段代码玩了一下,看起来很有效.这确实导致HTML没有多余空格并删除其他选项卡格式.
class Welcome extends CI_Controller
{
function _output()
{
echo preg_replace('!\s+!', ' ', $output);
}
function index(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
问题是可能有像<pre>,<textarea>等等的标签
,其中可能有空格,正则表达式应该删除它们.那么,如何从最终的HTML中删除多余的空间,而不使用正则表达式影响这些特定标记的空格或格式?
感谢@Alan Moore得到了答案,这对我有用
echo preg_replace('#(?ix)(?>[^\S ]\s*|\s{2,})(?=(?:(?:[^<]++|<(?!/?(?:textarea|pre)\b))*+)(?:<(?>textarea|pre)\b|\z))#', ' ', $output);
Run Code Online (Sandbox Code Playgroud)
ridgerunner在分析这个正则表达方面做得很好.我最终使用了他的解决方案.干杯里的干杯.
我一直在尝试解压缩以下文件:
sudo wget http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-x64.tar.gz
Run Code Online (Sandbox Code Playgroud)
以下内容:
sudo tar zxvf jdk-7u21-linux-x64.tar.gz -C /usr/lib/jvm/
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
我正在使用Amazon Linux实例.默认安装jre而不是jdk,我需要能够运行jboss.我会安装jdk使用yum,但不幸的是它似乎不可能.我遇到的问题是,如果我从我能够辨别出来的所有事情中做出正确的事情,那么为什么它不起作用是没有意义的.我已经下载了两个不同的版本,以确保它不仅仅是损坏的文件.任何帮助搞清楚这一点将不胜感激!
我正在阅读一篇解释如何在JPEG图片中隐藏文件的文章.
我想知道文件如何包含jpeg数据和rar文件,对图像或压缩文件没有任何可见的失真.
我的猜测是它与压缩文件或jpeg文件以二进制形式表示的方式有关,但我不知道它是如何工作的.
有人可以详细说明吗?