如何提高我的 gif 文件的分辨率?
how do i increase the resolution of my gif file?
当我尝试创建一个 gif 文件时,该文件已成功创建,但它正在像素化。因此,如果有人可以帮助我解决如何提高分辨率的问题。
.代码如下:-
import PIL
from PIL import Image
import NumPy as np
image_frames = []
days = np.arange(0, 12)
for i in days:
new_frame = PIL.Image.open(
r"C:\Users\Harsh Kotecha\PycharmProjects\pythonProject1\totalprecipplot" + "//" + str(i) + ".jpg"
)
image_frames.append(new_frame)
image_frames[0].save(
"precipitation.gif",
format="GIF",
append_images=image_frames[1:],
save_all="true",
duration=800,
loop=0,
quality=100,
)
这是Gif文件:-
原图如下:-
image1
image2
iamge3
更新答案
现在您已经提供了一些图像,我开始尝试禁用抖动:
#!/usr/bin/env python3
from PIL import Image
# User editable values
method = Image.FASTOCTREE
colors = 250
# Load images precip-01.jpg through precip-12.jpg, quantize to common palette
imgs = []
for i in range(1,12):
filename = f'precip-{i:02d}.jpg'
print(f'Loading: {filename}')
try:
im = Image.open(filename)
pImage = im.quantize(colors=colors, method=method, dither=0)
imgs.append(pImage)
except:
print(f'ERROR: Unable to open {filename}')
imgs[0].save(
"precipitation.gif",
format="GIF",
append_images=imgs[1:],
save_all="true",
duration=800,
loop=0
)
原答案
您的原始图像是 JPEG,这意味着它们可能有数千种颜色 2。当您制作动画 GIF(甚至是静态 GIF)时,每个帧的调色板中只能有 256 种颜色。
这会产生几个问题:
每一帧都有一个新的、不同的调色板与之一起存储,从而增加了 GIF 的大小(每个调色板为 0.75kB)
为了使图像看起来尽可能接近原始颜色,颜色会抖动
可以为几乎相同的帧选择不同的颜色,这意味着颜色在连续帧的不同阴影之间闪烁 - 可能导致 “闪烁” 像星星
如果你想学习 GIF,通过阅读 Anthony Thyssen 的精彩笔记,你可以学到 3,872 倍的知识here, here and here。
您的图片遇到了第一个问题,因为它有 12 "每帧" 局部颜色 table 以及全局颜色 table 3。它也遇到了第二个问题——抖动。
为避免抖动,您可能需要执行以下某些操作:
加载所有图像并将它们全部附加到一个 12x1 的怪物图像中,并找到所有颜色的最佳调色板。由于您所有的图像都非常相似,我认为您可以仅从第一张图像生成调色板而无需对所有 12 张图像进行蒙太奇 - 这样会更快
现在对每个图像进行调色,禁用抖动并使用单个通用调色板
保存您的调色板图像序列,从上面的第一步推入单个通用调色板
2:您可以使用 ImageMagick 计算图像中的颜色数,使用:
magick YOURIMAGE -format %k info:
3:您可以使用 gifsicle
在 GIF 中看到颜色 tables 使用:
gifsicle -I YOURIMAGE.GIF
当我尝试创建一个 gif 文件时,该文件已成功创建,但它正在像素化。因此,如果有人可以帮助我解决如何提高分辨率的问题。
.代码如下:-
import PIL
from PIL import Image
import NumPy as np
image_frames = []
days = np.arange(0, 12)
for i in days:
new_frame = PIL.Image.open(
r"C:\Users\Harsh Kotecha\PycharmProjects\pythonProject1\totalprecipplot" + "//" + str(i) + ".jpg"
)
image_frames.append(new_frame)
image_frames[0].save(
"precipitation.gif",
format="GIF",
append_images=image_frames[1:],
save_all="true",
duration=800,
loop=0,
quality=100,
)
这是Gif文件:-
原图如下:-
image1
image2
iamge3
更新答案
现在您已经提供了一些图像,我开始尝试禁用抖动:
#!/usr/bin/env python3
from PIL import Image
# User editable values
method = Image.FASTOCTREE
colors = 250
# Load images precip-01.jpg through precip-12.jpg, quantize to common palette
imgs = []
for i in range(1,12):
filename = f'precip-{i:02d}.jpg'
print(f'Loading: {filename}')
try:
im = Image.open(filename)
pImage = im.quantize(colors=colors, method=method, dither=0)
imgs.append(pImage)
except:
print(f'ERROR: Unable to open {filename}')
imgs[0].save(
"precipitation.gif",
format="GIF",
append_images=imgs[1:],
save_all="true",
duration=800,
loop=0
)
原答案
您的原始图像是 JPEG,这意味着它们可能有数千种颜色 2。当您制作动画 GIF(甚至是静态 GIF)时,每个帧的调色板中只能有 256 种颜色。
这会产生几个问题:
每一帧都有一个新的、不同的调色板与之一起存储,从而增加了 GIF 的大小(每个调色板为 0.75kB)
为了使图像看起来尽可能接近原始颜色,颜色会抖动
可以为几乎相同的帧选择不同的颜色,这意味着颜色在连续帧的不同阴影之间闪烁 - 可能导致 “闪烁” 像星星
如果你想学习 GIF,通过阅读 Anthony Thyssen 的精彩笔记,你可以学到 3,872 倍的知识here, here and here。
您的图片遇到了第一个问题,因为它有 12 "每帧" 局部颜色 table 以及全局颜色 table 3。它也遇到了第二个问题——抖动。
为避免抖动,您可能需要执行以下某些操作:
加载所有图像并将它们全部附加到一个 12x1 的怪物图像中,并找到所有颜色的最佳调色板。由于您所有的图像都非常相似,我认为您可以仅从第一张图像生成调色板而无需对所有 12 张图像进行蒙太奇 - 这样会更快
现在对每个图像进行调色,禁用抖动并使用单个通用调色板
保存您的调色板图像序列,从上面的第一步推入单个通用调色板
2:您可以使用 ImageMagick 计算图像中的颜色数,使用:
magick YOURIMAGE -format %k info:
3:您可以使用 gifsicle
在 GIF 中看到颜色 tables 使用:
gifsicle -I YOURIMAGE.GIF