在不创建或不使用解码器的情况下创建 JPG 文件的镜像的过程是什么?
What is the process to create a mirror-image of a JPG file without creating or using a decoder?
所以,我正在尝试在字节级进行图像处理(没有 'Image' 包装器或库),所以语言并不重要(我使用的是 C#)作为字节操作,他们自己。
我现在正尝试在 x 轴和 y 轴上翻转 .jpg 图像(减去幻数),但经过反复试验后意识到我认为编码有问题。这是我在没有 FF D8 或 FFD9 的 byte[] 上使用的代码包括:
//No magic number included
public class MirrorImgOverXAndYAxes : IFunction
{
//No magic number included
public byte[] Exec(byte[] jpgImage)
{
byte[] resultingImage = new byte[jpgImage.Length];
for (var i = jpgImage.Length - 1; i >= 0; i--)
{
var indexToInsert = jpgImage.Length - 1 - i;
resultingImage[indexToInsert] = jpgImage[i];
}
return resultingImage;
}
}
现在,我的假设是它远没有这么简单,我必须构建一个成熟的解码器才能像这样处理图像字节。
是否可以在没有解码器的情况下创建此镜像,我正在做的事情是否可行?
您好,由于 jpg 文件的实际结构,我想仅通过切换字节位置来翻转 jpeg 在这里不起作用。如果你想了解更多,可以看这里 enter link description here
但是您可以尝试将图像转换为实际将像素保存在单个字节内的格式。例如位图 (.bmp).
没有简单的方法可以制作无需解码即可正常工作的镜像。
一个问题是 JPEG 图像在 MCU 中编码,而 MCU 又由 8 x 8 像素的块组成。为简单起见,假设 MCU 是一个 8x8 块,图像宽度为 15 像素。这意味着边缘会有一个虚拟列。如果你只是翻转它,虚拟列将可见,图像列将脱离边缘。
所以,我正在尝试在字节级进行图像处理(没有 'Image' 包装器或库),所以语言并不重要(我使用的是 C#)作为字节操作,他们自己。
我现在正尝试在 x 轴和 y 轴上翻转 .jpg 图像(减去幻数),但经过反复试验后意识到我认为编码有问题。这是我在没有 FF D8 或 FFD9 的 byte[] 上使用的代码包括:
//No magic number included
public class MirrorImgOverXAndYAxes : IFunction
{
//No magic number included
public byte[] Exec(byte[] jpgImage)
{
byte[] resultingImage = new byte[jpgImage.Length];
for (var i = jpgImage.Length - 1; i >= 0; i--)
{
var indexToInsert = jpgImage.Length - 1 - i;
resultingImage[indexToInsert] = jpgImage[i];
}
return resultingImage;
}
}
现在,我的假设是它远没有这么简单,我必须构建一个成熟的解码器才能像这样处理图像字节。
是否可以在没有解码器的情况下创建此镜像,我正在做的事情是否可行?
您好,由于 jpg 文件的实际结构,我想仅通过切换字节位置来翻转 jpeg 在这里不起作用。如果你想了解更多,可以看这里 enter link description here 但是您可以尝试将图像转换为实际将像素保存在单个字节内的格式。例如位图 (.bmp).
没有简单的方法可以制作无需解码即可正常工作的镜像。
一个问题是 JPEG 图像在 MCU 中编码,而 MCU 又由 8 x 8 像素的块组成。为简单起见,假设 MCU 是一个 8x8 块,图像宽度为 15 像素。这意味着边缘会有一个虚拟列。如果你只是翻转它,虚拟列将可见,图像列将脱离边缘。