我正在使用模拟图像训练神经网络,而现实生活中发生的事情之一就是低质量 JPEG 压缩。它以一种特殊的方式模糊锋利的边缘。有人有有效的方法来模拟这些效果吗?我的意思是创建一个干净输入的损坏版本。图像是灰度的,存储为 numpy 数组。
我需要将图片发送到另一个地方,那里要求图片大小必须小于512kb。
我用来PIL处理从互联网下载的图片。所以我不知道下一张图片的尺寸是多少,代码如下:
from PIL import Image
picture_location = '/var/picture/1233123.jpg'
compressed_picture_location = '/var/picture/1233123_compressed.jpg'
im = Image.open(picture_location)
quality = 75
im.save(compressed_picture_location, quality=quality)
im.save()
问题是压缩图片的文件大小不是原始图片的75%或75%*75%,所以我必须压缩它,统计它,再次压缩,我无法选择合适的质量值。
还有其他方法可以解决这个问题吗?请帮助或尝试给出一些如何实现这一目标的想法。
我必须将传入文件的大小减少到最大 1MB。我用于PIL图像操作和 python 3.5。图像的文件大小由下式给出:
import os
src = 'testfile.jpg'
os.path.getsize(src)
print(src)
在我的例子中给出了 1531494 如果我用 PIL 打开文件,我只能得到尺寸:
from PIL import Image
src = 'testfile.jpg'
image = Image.open(src)
size =  image.size
print(size)
在我的例子中给出了 (1654, 3968)
当然,我可以按如下所示对不同大小的文件进行循环,保存文件并检查其文件大小。但必须有一个更简单的方法,因为这需要太多时间。(如果缩小1000个不同大小的文件)
def resize_image(src, reduceby=1):
    '''
    resizes image by percent given in reduceby
    '''
    print(" process_image:",src, reduceby)
    org = Image.open(src)
    real_size = org.size
    reduced_size = (int(real_size[0] * reduceby / 100),int(real_size[1] * reduceby / 100) )
    org.resize(reduced_size, Image.ANTIALIAS)
    reduced_file = src[:-4] +"_" + str(reduceby) + src[-4:]
    org.save(reduced_file, …我们在网站内的许多地方使用图片:
等等.
我有控制权来确保图像不超过5mb.但是,页面需要很长时间才能加载.
我们使用Ruby来生成API和Angular.我们进行了大量优化,我们开始使用CDN来降低js文件的负载.
图像是现在唯一的问题.我不想像paperclip我们已经使用的那样使用Gem dragonfly.
我可以使用后台进程处理每个上传的图像,但我寻求一种更干净,更方便的方式.
我正在尝试compress the quality使用图像ImageMagick。1600X800我的意思是我有一个尺寸为且大小为 的图像4MB。现在我试图在2MB不调整其尺寸的情况下压缩该图像的质量,这意味着新生成的图像也具有与实际图像相同的尺寸(i.e. 1600X800),但该图像的质量应压缩为2MB(half of the actual image)。为此,现在我使用下面的代码,但这并没有压缩新创建的图像的大小:
$src_img = "src.png";
$dest_img = "dest.png";
exec("convert $src_img -quality 90 $dest_img");
那么有人可以告诉我我可以做什么来压缩图像的大小而不丢失其实际尺寸吗ImageMagick?