或者,是否有更好的库来处理压缩?
让我用我已经理解的内容作为序言:(1)JPEG是有损的 - 它看起来与输入文件不一样.(2)我可以将压缩质量设置调整到0.0到1.0之间,正如我在下面的代码中所做的那样.
我正在使用BufferedImage并将其转换为JPEG,并注意到Java的ImageWriter的.write()方法为JPEG图像生成了低于标准的结果(与Photoshop"Save for Web"相比,作为示例).
我的代码现在看起来有点像这样:
// img is a BufferedImage, here
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(.75f);
IIOImage image = new IIOImage(img, null, null);
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(byteArrayOut));
writer.write(null, image, iwp);
writer.dispose();
Run Code Online (Sandbox Code Playgroud)
使用压缩质量设置会产生不同的质量输出,但即使设置为"1.0",它们也不像创建JPEG时的其他工具那样好.
由于我是新用户,无法发布图片...... 这是一个演示差异的网页.希望我可以在某些时候永久地让他们进入这里,以便将来可能有类似问题的用户.
显然,这个特定的图像不是JPEG压缩的最佳候选者(PNG更小,无损),但它可以更容易地看到压缩伪像.实际的图像本质上主要是摄影的.至少,这更多地质疑Java的JPEG压缩算法和质量,而不是那些产生更接近原始图像的图像.
有一个电子商务网站,我们有成千上万的产品图片。在谷歌上检查页面速度时,它向我显示了这样的内容:

我想知道,Java 中是否有任何内置功能或任何第三方库可用,我们可以使用它们无损地压缩我们托管的所有图像。因此,我们可以为客户节省几 KB。
在网上搜索我发现很少有像punnypng和kraken这样的付费的,因此我们每个月都没有上传重磅图片,订阅它们不值得。我更喜欢 Java 或任何开源第三方库中的任何内置功能。
我遇到了JAI,但不确定它是否解决了这个问题。有人有这方面的实践经验吗?
PS 我们使用的是 Java 8
我需要通过网络从Kinect摄像机发送视频。我正在从以下两个Kinect来源捕获视频:
这相当于至少约53 MB / s的带宽。这就是为什么我需要在源处对两个视频源进行编码(压缩),然后在目标处进行解码。RGB-D数据将由目标处的对象跟踪算法处理。
到目前为止,我发现有许多论文讨论了实现这一任务的算法,例如: RGB和低带宽3D视频的深度帧内交叉压缩
问题在于,此类论文中描述的算法没有公共访问实现。我知道,我可以自己实现它们,但是它们利用了我还不了解的许多其他复杂图像处理算法(边缘检测,轮廓表征等)。
我实际上还发现了一些基于离散中值过滤器,增量(避免发送冗余数据)和LZ4压缩的C ++库:http : //thebytekitchen.com/2014/03/24/data-compression-for-the -kinect /
我的问题是:有没有更简单和/或更有效的方法来压缩Kinect源中的RGB-D数据?
PS:我正在用C ++编写代码。
compression video run-length-encoding image-compression kinect
我一直在寻找一种优化图像以获得更好性能的解决方案。
在尝试了一些解决方案(例如Sharp和imagemin,这导致文件永远不会更小,有时更大)之后,我现在正在尝试尝试 Google 的 pagespeed。不幸的是,pagespeed 似乎只支持 Apache 和 Nginx,我不想将其添加到我的堆栈中只是为了图像优化(另外,我更喜欢在上传时进行优化,而不是在服务器请求时进行优化,即使缓存)。
我将非常感谢任何可能帮助我在本机 Node.js 中实现这一点的信息,以及任何其他(有效!)图像优化建议。
javascript image-compression image-optimization pagespeed node.js
我正在使用 Retrofit retrofit:2.1.0' 将文件图像上传到服务器
如果我使用前置摄像头拍摄图像成功上传但如果拍摄后置摄像头它没有上传我认为因为大文件大小的图像没有上传是否有任何选项可以在发送到服务器进行改造之前压缩文件大小?
文件发送编码
map.put("complaint_category", RequestBody.create(parse("text"), caty_id_str.getBytes()));
// Map is used to multipart the file using okhttp3.RequestBody
File file = new File(Config.uriImage);
// Parsing any Media type file
RequestBody requestBody = RequestBody.create(parse("*/*"), file);
MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("photo", file.getName(), requestBody);
RequestBody filename = RequestBody.create(parse("text/plain"), file.getName());
Call<PostComplaint> call3 = apiInterface.postComplaint(fileToUpload, filename, map);
call3.enqueue(new Callback<PostComplaint>() {
@Override
public void onResponse(Call<PostComplaint> call, Response<PostComplaint> response) {
progressDoalog.dismiss();
PostComplaint respon = response.body();
PostComplaint.Response respo = respon.getResponse();
String result = respo.getResult();
String data = respo.getData(); …Run Code Online (Sandbox Code Playgroud) 我想压缩大型 GIF 图像文件,然后再将它们发送到我的聊天应用程序的服务器(类似 WhatsApp 的功能)。
提前致谢。
save(event: any, type, image_type) {
this.uploadImageFlag = true;
const fileList: FileList = event.target.files;
if (fileList.length > 0) {
const file: File = fileList[0]
this.files.set('files', file, file.name)
const reader = new FileReader();
reader.onload = (event: any) => {
this.url2 = event.target.result;
this.upload = true;
}
reader.readAsDataURL(event.target.files[0]);
}
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<input id="input" type="file" accept="image/*" style=" width: 180px;" #files (change)="save($event)" />Run Code Online (Sandbox Code Playgroud)
我正在使用以下功能上传图像并将其发送到后端。问题是图像大小非常大,需要时间才能到达后端。我看过很多关于如何压缩图像的例子,但我真的不想改变我现有的代码和修改模块,所以有人可以告诉我如何改变这个函数并压缩图像。
我想将图像中的颜色数量(即 24 位 PNG 文件)减少为较小的 8 位索引彩色图像。
我想通过从图库中选择来在 iOS 设备上创建 WhatsApp 贴纸,因为它允许 512 X 512 像素大小和小于 100k 的文件大小
我已经绑定了这个代码
func resizeImageWith(image: UIImage, newSize: CGSize) -> UIImage {
let horizontalRatio = newSize.width / image.size.width
let verticalRatio = newSize.height / image.size.height
let ratio = max(horizontalRatio, verticalRatio)
let newSize = CGSize(width: image.size.width * ratio, height: image.size.height * ratio)
var newImage: UIImage
let renderFormat = UIGraphicsImageRendererFormat.default()
renderFormat.opaque = false
if #available(iOS 12.0, *) {
renderFormat.preferredRange = .standard
} else {
// Fallback on earlier …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
我想找到尽可能最小但有效(可查看)的 base64 编码 AVIF 字符串,用于使用 javaScript 测试浏览器图像支持。
我正在使用这套:
const imgs = {
jxl: "/wr6HwGRCAYBAFAASzhB5k11/Ia1kyog0AHeH0nCAVw=",
avif: "AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=",
webp: "UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",
jpg: "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////wgALCAABAAEBAREA/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQABPxA=",
png: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=",
gif: "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
};
Run Code Online (Sandbox Code Playgroud)
我发现了这个,它是一个有效的 URI,但不是一个可见的图像:
AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUEAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAA
Run Code Online (Sandbox Code Playgroud)
这是我能找到的最短的有效(可查看)(311B):
AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=
Run Code Online (Sandbox Code Playgroud)
有谁知道有更短的吗?TXS!!!
android ×2
java ×2
javascript ×2
angular ×1
avif ×1
base64 ×1
compression ×1
core-image ×1
django ×1
gif ×1
image-upload ×1
ios ×1
jpeg ×1
jxl ×1
kinect ×1
node.js ×1
pagespeed ×1
python-3.x ×1
retrofit2 ×1
swift ×1
video ×1
whatsapp ×1