标签: image-compression

是否可以告诉JPEG的质量水平?

这实际上是一个两部分问题,因为我还没有完全理解这些东西是如何工作的:

我的情况:我正在编写一个让用户上传图片的网络应用程序.然后我的应用程序调整为可显示的内容(例如:640x480-ish)并保存文件以供日后使用.

我的问题:

  1. 给定一个任意的JPEG文件,是否可以判断质量等级是什么,以便在保存调整大小的图像时可以使用相同的质量?
  2. 这甚至不重要吗?无论原始质量如何,我是否应该将所有图像保存在合适的级别(例如:75-80)?

我对此并不十分肯定,因为我认为:(让我们举一个极端的例子),如果某人有500万像素的图像以质量0保存,它就会像任何东西一样块状.将图像尺寸缩小到640x480,可以平滑块状,几乎不那么明显......直到我再次将质量保存为0 ...

在频谱的另一端,如果有一个图像是800x600,q = 0,调整到640x480不会改变它看起来像完全废话的事实,所以用q = 80保存将是多余的.

我甚至关闭了吗?

我在PHP上使用GD2库,如果有任何用处的话

jpeg image-processing image-compression

66
推荐指数
6
解决办法
4万
查看次数

图像压缩工具通过命令行

我正在寻找通过命令行压缩图像(png和jpeg)的最佳工具.
谷歌搜索后我发现trimage是好的,因为它压缩了png和jepeg,但在这种情况下压缩比非常差.

我遇到了jpeg-optimizer.com在线工具,它比trimage做得更好.任何人都可以帮助找到合适的工具.

optimization image-processing image-compression

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

使用Java中的ImageIO设置jpg压缩级别

我正在使用javax.imageio.ImageIO保存BufferedImage为jpeg文件.特别是,我创建了以下Java函数:

public static void getScreenShot(BufferedImage capture, Path folder, String filename) {
        try {
            ImageIO.write(capture, "jpeg", new File(folder.toString()+"/"+filename+".jpg"));
        } catch (AWTException | IOException ex) {
            Logger.getLogger(ScreenShotMaker.class.getName()).log(Level.SEVERE, null, ex);
        }
}
Run Code Online (Sandbox Code Playgroud)

同样任何图像处理软件,我希望改变jpeg文件的压缩级别.但是,我正在寻找似乎缺少的这个选项ImageIO.

我可以设置压缩级别以及如何设置?

java jpeg image-compression javax.imageio

43
推荐指数
2
解决办法
4万
查看次数

Code Golf:1x1黑色像素

最近,我使用自己喜欢的图像编辑器制作1x1黑色像素(当您想要以便宜的方式在HTML中绘制实心框时,它可以派上用场).虽然我把它变成了单色PNG,但它却是120字节!我的意思是,那有点陡峭.120个字节. 对于一个像素.然后我将它转换为GIF,将大小减小到43个字节.好多了,但还是......

挑战

最短的图像文件或程序产生一个1x1黑像素.提交可能是:

  • 表示1x1黑色像素的图像文件.选择的格式必须能够代表比1x1更大的图像,并且不能是临时的(也就是说,它不能是您刚刚为代码高尔夫编写的图像格式).图像文件将按字节数排序.
  • 生成此类图像文件的程序.程序将按照字符数进行排名,就像在高尔夫代码中一样.

只要答案属于这两个类别中的一个,任何事情都是公平的.

此外,对于图像文件,请以十六进制或转义指定它们而不是使用外部图像主机:-)

language-agnostic code-golf image-compression rosetta-stone

30
推荐指数
7
解决办法
5194
查看次数

如何压缩图像大小?

我想使用android camera api以低分辨率捕获图像,但是当我捕获图像时,它将采用设备相机的默认分辨率.所以我想在捕获时捕获低分辨率或小尺寸的图像,或者如何将大图像压缩成android中的小尺寸?

android image-compression android-camera android-camera-intent

26
推荐指数
4
解决办法
8万
查看次数

如何使用特定文件大小保存图像?

我正在构建一个PHP系统,用户可以创建一个视觉上复杂的图像,最终要求为50kB或更低.

用户可以选择将文本打印到37个模板图像中的一个上,因此结果是单个平面图像.

文本可以是任何颜色和多种字体之一.这意味着最终图像可能非常复杂且不可预测(图像尺寸除外).

然后,我要求最终图像文件大小不超过50kB(这是一个外部要求,不能更改).

最后一个要求(同样是外部)是图像格式必须是.jpeg,.png或.gif.

我查看了GraphicsMagick文档,但无法找到任何能够设置文件大小并自动计算压缩的地方.

我已经考虑通过compress-> save->测试循环以编程方式执行此操作,但是我可以想象这将是处理器密集型的,因为我不一定能提前基于压缩来计算文件大小.这就是为什么我要问看看这个问题是否已经在GraphicsMagick中解决了.

编辑

要明确为什么有外部要求:

用户将利用该系统创建一个平面图像,然后将其保存到PC上.然后,此图片将上传到Adroll,以便在重定向广告系列中使用.

以下是Adroll对图像的要求.我的系统仅提供728x90,300x250和120x600图像尺寸.

编辑 2010年11月27日

由于GraphicsMagick似乎无法做到这一点,我愿意研究其他解决方案,例如直接与可能提供功能的压缩库(libpng等)接口.

作为最后的手段,我甚至可以看到能够实现这一目标并自己实现的算法.


作为类比,对于那些倾向于这样的人:

我追求A*的搜索:它有一个明确的起点/终点,并在最快的时间内找到最佳路线.

我希望避免的是广度/深度优先搜索:明确的起点/终点,但一旦找到局部最小值,可能不会达到最优解,并且有可能在计算上完全爆发.

php image image-processing image-compression

23
推荐指数
3
解决办法
6927
查看次数

将源图像与一组已知图像进行比较

我正在为我的一个朋友的父母建立一个应用程序,它可悲地中风,不能再说话,阅读或拼写.然而,他可以绘制相当详细的图纸.

我目前已经构建了一个可以处理绘图图像并检测基本形状的应用程序.(线条,正方形和三角形)应用程序可以计算已绘制的每个形状的数量,因此它知道具有两个正方形的图像与仅具有一个正方形的图像之间的差异.

这会给用户带来大量的认知负担,以记住形状的所有组合及其含义.我目前正在检测图像中的轮廓

findContours(maskMat, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);

我想要实现的是用户绘制形状,将其添加到一组已知图形,然后每次绘制图像时,应用程序处理每个已知图像,将其与源图像进行比较并保存相似度值.然后取最高相似度值,假设它高于阈值,则可以将其绘制为最佳已知图像.

我已经研究过OpenCV模式匹配以及模板但结果不可靠.

我正在寻求建议,以提供我希望得到的最佳方法.

我为我的大学讲座制作了一个宣传视频,以便最好地说明应用程序的功能.如果您有兴趣,可以在这里查看.https://youtu.be/ngMUUIsLHoc

提前致谢.

opencv image image-processing image-compression ios

19
推荐指数
3
解决办法
396
查看次数

用于Windows的图像压缩工具,类似于ImageOptim(Mac)

我正在寻找适用于Windows的图像压缩工具(Windows 7,更具体地说),类似于ImageOptim(Mac).我在Windows中使用了很少的jpeg压缩器工具但它们没有给出所需的结果.是的,他们压缩尺寸,但JPEG的质量不好.有些工具总是在图像上打印出水印.这不是我想要的.

该工具应具有以下功能.1.免费使用许可证.2.最佳压缩3.最佳质量4.多格式压缩,例如.JPG,GIF,PNG等.5.使用Windows上下文菜单命令直接从资源管理器转换图像.

等待你的回复.感谢你们.

windows png jpeg image image-compression

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

如何在Android上将Bitmap压缩为JPEG质量损失最小?

这不是一个简单的问题,请仔细阅读!

我想操作JPEG文件并将其再次保存为JPEG.问题是,即使没有操纵,也会出现明显(可见)的质量损失. 问题:我缺少什么选项或API,能够在没有质量损失的情况下重新压缩JPEG(我知道这不完全可能,但我认为我在下面描述的不是可接受的工件级别,特别是质量= 100).

控制

Bitmap从文件加载它:

BitmapFactory.Options options = new BitmapFactory.Options();
// explicitly state everything so the configuration is clear
options.inPreferredConfig = Config.ARGB_8888;
options.inDither = false; // shouldn't be used anyway since 8888 can store HQ pixels
options.inScaled = false;
options.inPremultiplied = false; // no alpha, but disable explicitly
options.inSampleSize = 1; // make sure pixels are 1:1
options.inPreferQualityOverSpeed = true; // doesn't make a difference
// I'm loading the highest possible quality without any scaling/sizing/manipulation
Bitmap …
Run Code Online (Sandbox Code Playgroud)

android jpeg image bitmap image-compression

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

使用SVD在MATLAB中压缩图像

我是MATLAB的新手,但我正在尝试为灰度图像做一些图像压缩代码.

问题

如何使用SVD修剪低值特征值来重建压缩图像?

到目前为止的工作/尝试

到目前为止我的代码是:

B=imread('images1.jpeg');   
B=rgb2gray(B);  
doubleB=double(B);  
%read the image and store it as matrix B, convert the image to a grayscale
photo and convert the matrix to a class 'double' for values 0-255  
[U,S,V]=svd(doubleB);
Run Code Online (Sandbox Code Playgroud)

这允许我用存储在变量S中的特征值成功地分解图像矩阵.

如何截断S(167x301,类double)?让我们说一下167个特征值我只想要前100个(或任何n个),我该怎么做并重建压缩图像?

更新了代码/想法

这不是在评论部分放置一堆代码,而是我现有的草案.我已经能够通过手动更改N来成功创建压缩图像,但我还想做两件事:

1-显示各种压缩图像的面板(i/e,运行N = 5,10,25等的循环)

2-以某种方式计算每个图像与原始图像之间的差异(误差)并绘制图形.

我理解循环和输出很糟糕,但这是我尝试过的:

B=imread('images1.jpeg');  
B=rgb2gray(B);  
doubleB=im2double(B);%  
%read the image and store it as matrix B, convert the image to a grayscale  
%photo and convert the image to a class 'double'  
[U,S,V]=svd(doubleB);   
C=S;  
for N=[5,10,25,50,100]  
C(N+1:end,:)=0;  
C(:,N+1:end)=0;  
D=U*C*V';  
%Use …
Run Code Online (Sandbox Code Playgroud)

matlab image-processing octave svd image-compression

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