我在Photoshop中为我的网站创建了一个设计,并将所有图像导出为24位PNG图像.之后,在网站上运行PageSpeed测试表明,无损压缩可以将图像进一步缩小至50%.怎么会这样?Photoshop不会尽可能地压缩图像吗?Google PageSpeed在内部使用什么图像压缩程序,我可能想尝试一下.
我的iOS应用程序出现了图像尺寸问题,我发现了这篇文章,同时找到了一些图像尺寸优化解决方案
阅读之后,我意识到我不需要只使用PNG或JPEG.实际上,我可以使用默认情况下iOS平台不支持的任何图像格式.因为如果我可以获得实际像素,将其转换为UIImagevia CGImage只是一项简单的工作.我可以使用特殊的位图格式和特殊的解码器.例如,有一种称为纹理图集的技术可以在大位图中存储许多图像,并且可以节省额外的重复存储桶.
所以我问的是最小的(压缩时)无损图像压缩格式和/或库.如果你知道一些很棒的格式或图书馆,我希望你能推荐给我.
如果它是开源的话会很好,但我不介意它是否是专有的闭源和付费解决方案.我需要的只是令人敬畏的图像压缩,而不是源代码.当然,它必须可以在iOS平台上使用,因此它应该提供可用于C,C +或Objective-C语言的解码器.(我在这些平台上不需要编码器)
感谢您抽出宝贵时间阅读我的帖子.
我正在开展一个进展顺利的小项目,但作为优化练习,我想减少一些JPEG输出的大小.目前,我有一个600 x 400的.jpg,大约80kb.
我已经阅读了32位,8位图像被签名,无符号和浮点数和字符,以及BGR和YUV颜色空间,我不确定哪些是影响大小的因素.
有人可以建议我可以开始减少这个文件的大小吗?
我当然会玩并进行自己的测试,以找到适合文件大小平衡的图像质量.
非常感谢Kay
我需要旋转相机拍摄的图像,以便它们始终具有正常方向.
为此,我使用下一个代码(使用此帖子来获取图像方向)
//<= get the angle of the image , and decode the image from the file
final Matrix matrix = new Matrix();
//<= prepare the matrix based on the EXIF data (based on https://gist.github.com/9re/1990019 )
final Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(),matrix,false);
bitmap.recycle();
fileOutputStream = new FileOutputStream(tempFilePath);
rotatedBitmap.compress(CompressFormat.JPEG, 100, fileOutputStream);
rotatedBitmap.recycle();
Run Code Online (Sandbox Code Playgroud)
这里压缩率(AKA"质量"参数)是100.
代码工作正常,但结果比原来大,大得多.
原始文件大约为600-700 KB,而生成的文件大约为3MB ...
即使输入文件和输出文件都具有相同的格式(JPEG),这也是如此.
相机设置为"超精细"质量.不确定它意味着什么,但我认为这与压缩率有关.
我试图将"filter"参数设置为false或true.两者都导致了大文件.
即使没有旋转本身(只是解码和编码),我也会获得更大的文件大小......
只有当我将压缩比设置为大约85时,我才会得到类似的文件大小,但我想知道与原始文件相比质量会受到什么影响.
它为什么会发生?
有没有办法获得完全相同的输入文件的大小和质量?
使用与原始文件相同的压缩率会使它发生吗?甚至可以获得原始文件的压缩率?
拥有100%压缩率意味着什么?
编辑:我发现这个链接谈论JPEG文件的旋转而不会丢失质量和文件大小,但在Android上是否有解决方案?
这是另一个链接,说它是可能的,但我找不到任何允许旋转jpeg文件而不会失去其质量的库
要解决的问题:
我在CentOS平台上.我希望压缩静态图像资源(jpg/gif/png)以优化Web服务(不调整大小),同时保留原始文件.
例如,
发送到的请求http://server-A/images/image.jpg将使用预配置的无损/有损参数进行即时压缩(和缓存).
我想Polish在Cloudflare中实现类似的功能效果,但在我自己的Web服务器上.
有哪些工具可用于此类集成?
另一种想法:
有没有办法观察/originals/任何变化的路径,如果是,然后进行离线图像压缩并将其输出到/compressed/路径?
我使用 Microsoft Paint 创建了一张 15248 x 6552 的纯色图片。我将它保存为 .png 和 .jpg 并希望 .jpg 小于 .png,但事实并非如此。.jpg 文件为 1.49MB,而 .png 为 391KB。jpeg 作为有损压缩在技术上不应该更小吗?
我在某处读到 .png 更适合纯色等,所以我从网上下载了一张图片(不是纯色)并使用油漆将它保存为两种格式。这次 jpeg 比 png 小。仅仅是因为颜色的渐变吗?如果是,那为什么?
即使图片是纯色的,jpg encodng 是否应该能够更好地压缩它?
我正在提高我的应用程序的性能。
我想将图像和视频压缩到最小尺寸,而不会造成任何质量损失,即无损压缩。
对于图像,我使用了imagemin包。它适用于png格式,但对于jpeg 格式,效率非常低。
对于视频,我找不到任何方法可以在不降低分辨率且不造成任何质量损失的情况下最小化视频大小。
当我根据它工作正常的文档在 node.js 中实现它时,我试图用mozjpeg压缩图像。
const input = fs.readFileSync("in.ppm");
const out = mozjpeg.encode(input, { quality: 85 });
Run Code Online (Sandbox Code Playgroud)
我需要在客户端进行压缩,所以我尝试对 react-native 做同样的事情,因为 react-native 不包含 fs 等核心节点模块,我需要去第三方库react-native -fs用于文件读取。
当我尝试mozjpeg.encode(input, { quality: 85 });在 react-native 中执行时,它会抛出Unrecognized input file format --- perhaps you need -targa
服务器端实现
const mozjpeg = require("mozjpeg-js");
const fs = require("fs");
const input = fs.readFileSync(filePath);
const out = mozjpeg.encode(input, { quality: 85 });
console.error(out.stderr);
fs.writeFileSync("out.jpg", out.data);
Run Code Online (Sandbox Code Playgroud)
客户端实现
fs.readFile(image.path).then(data => {
const out = mozjpeg.encode(data, { quality: 85 …Run Code Online (Sandbox Code Playgroud) Flutter Web 目前处于测试阶段,因此缺乏有关如何执行此操作的可用信息/资源。
我找不到任何与 web 兼容的 flutter 包来做到这一点。有小费吗?
这是我的代码:
uploadImage() async {
File file;
FileReader fileReader = FileReader();
InputElement uploadInput = FileUploadInputElement();
uploadInput.click();
uploadInput.onChange.listen((event) {
file = uploadInput.files.first;
fileReader.readAsDataUrl(file);
fileReader.onLoadEnd.listen((event) {
if (file.type == "image/jpg" || file.type == "image/jpeg" || file.type == "image/png") {
String base64FileString = fileReader.result.toString().split(',')[1];
//COMPRESS FILE HERE
setState(() {
userImgFile = file;
userImageByteMemory = base64Decode(base64FileString);
});
} else {
CustomAlerts().showErrorAlert(context, "Image Upload Error", "Please Upload a Valid Image");
}
});
});
}
Run Code Online (Sandbox Code Playgroud) 我在测试临时图像和压缩 models.py 中的图像时遇到了一个奇怪的问题。权限好像有问题:
ERROR: test_has_light_images (realestate.tests.test_view_listing.RealestateListingViewTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\Storm\Envs\btre\lib\site-packages\django\test\utils.py", line 373, in inner
return func(*args, **kwargs)
File "C:\Users\Storm\Dev\btre_project\realestate\tests\test_view_listing.py", line 72, in test_has_light_images
create_listing(title='listing_sample', address='sample', realtor_num=1, city='sample', state='sample', zipcode='1234', price='555555', bedrooms='1', bathrooms='1', garage='1', sqft='123', lot_size='123', image_sample=image_sample.name)
File "C:\Users\Storm\Dev\btre_project\realestate\tests\test_view_listing.py", line 37, in create_listing
return Listing.objects.create(title=title, address=address, realtor=realtor, city=city, state=state, zipcode=zipcode, price=price, bedrooms=bedrooms, bathrooms=bathrooms, garage=garage, sqft=sqft, lot_size=lot_size, photo_main=image_sample, photo_1=image_sample, photo_2=image_sample, photo_3=image_sample, photo_4=image_sample, photo_5=image_sample, photo_6=image_sample)
File "C:\Users\Storm\Envs\btre\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\Storm\Envs\btre\lib\site-packages\django\db\models\query.py", line 422, …Run Code Online (Sandbox Code Playgroud) django automated-tests temporary-files image-compression python-3.x
jpeg ×3
android ×2
image ×2
javascript ×2
png ×2
compression ×1
django ×1
flutter ×1
flutter-web ×1
ios ×1
mozjpeg ×1
nginx ×1
node.js ×1
npm ×1
opencv ×1
optimization ×1
pagespeed ×1
python-3.x ×1
react-native ×1