我经常使用JPEG的图像,我已经注意到,有两个非常相似的文件扩展名:.jpg,这我的手机的摄像头和预览应用程序使用,并且.jpeg,与图像捕捉从我的扫描保存图像佳能MX455打印机.LaTeX似乎没有区分,因为我给它.jpeg改变了扩展名.jpg,结果似乎与.jpg从一开始就是正确的结果相同.我想知道两者之间的区别是什么.我已经遇到过这个问题,并且肯定会读到这个问题,尽管目前我还有点时间.然而,从我看到的快速浏览,似乎没有区分这两个扩展.事实上,似乎文件类型的名称是JPEG,文件扩展名是.jpg:
JPEG(或JPG,用于文件扩展名;联合图像专家组)
(摘自第一个答案).那么两个扩展之间有什么大的区别吗?如果是这样,它是什么?
JPEG,GIF和PNG可以使用img标签显示,并且可以在所有浏览器中使用,对象元素可以用于显示指定其MIME类型的图像,但是在大多数浏览器中img或object标签支持的其他图形格式没有安装插件吗?(TIF,SVG,PCX,PICT等..)
是否有可能找出在PHP中编码为base64字符串的图像类型?
我没有访问原始图像文件的方法,只有编码的字符串.从我所看到的,imagecreatefromstring()可以从字符串表示(从base64解码后)创建图像资源,但它自动检测图像类型,图像资源本身是一个特殊的PHP表示.如果我想再次将图像保存为文件,我不知道我保存的类型是否与创建字符串表示的原始类型相对应.
使用PIL.Image加载图像文件后,如何确定图像文件是否为PNG/JPG/BMP/GIF?我对这些文件格式了解甚少,PIL可以format从文件头获取元数据吗?或者是否需要"分析"文件中的数据?
如果PIL没有提供这样的API,那么有没有python库呢?
我正在尝试将图像添加到我正在创建的RTF文档中.我宁愿不使用"复制/粘贴"的方法(即涉及粘贴一个RichTextBox内的图像,然后访问.RTF属性),它清除剪贴板(因为这将是我的最终用户的麻烦和混乱).
到目前为止我的代码返回了需要插入RTF文档以打印图像的字符串.输入的图像(位于$ path)通常采用bmp或jpeg格式,但在这个阶段我并不关心图像是如何存储在RTF中的,只是我可以让它工作.
public string GetImage(string path, int width, int height)
{
MemoryStream stream = new MemoryStream();
string newPath = Path.Combine(Environment.CurrentDirectory, path);
Image img = Image.FromFile(newPath);
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
byte [] bytes = stream.ToArray();
string str = BitConverter.ToString(bytes, 0).Replace("-", string.Empty);
//string str = System.Text.Encoding.UTF8.GetString(bytes);
string mpic = @"{\pict\pngblip\picw" +
img.Width.ToString() + @"\pich" + img.Height.ToString() +
@"\picwgoa" + width.ToString() + @"\pichgoa" + height.ToString() +
@"\hex " + str + "}";
return mpic
}
Run Code Online (Sandbox Code Playgroud)
但问题是这段代码不起作用,因为据我所知,字符串str没有正确的字符串转换在RTF中工作.
编辑:我的问题是在@"\ hex"中的\ hex之后缺少一个空格,并且也没有从BitConverter的返回值中删除" - "字符
在OpenCV的C++界面中,检查图像类型似乎很容易.如果您有图像cv::Mat img = cv::imread("someImage.xyz"),那么您就是这样做的int theType = img.type().
但是,正如您所期望的那样,调用img.type()只给出一个整数,而不是枚举名称(例如CV_32FC1).
CV_32FC1如果我知道OpenCV枚举的整数值,是否有一种简单的方法可以打印出枚举名称(例如)?
根据标题,WPF中使用的首选图像格式(或格式)是什么?
我的公司将雇用一名设计师来设计一些徽标,图像,工具栏图标等,以便在WPF应用程序中使用.我打算要求矢量图形,因为它们应该拉伸,收缩等,而不会失去清晰度;
但是,阅读这篇文章 WPF是否支持本地读/写WMF/EMF文件? 和其他人让我担心; 它不像一个简单的任务吗?!这不是WPF应该在睡眠中原生处理的东西吗?拉伸,旋转,抛火焰,烤面包等......
我想知道主要浏览器会支持哪些图像格式(除了基本的JPEG,GIF,PNG),特别是Chrome,Firefox和Webkit.如果任何人都可以提供某个地方的列表链接(经常更新以应对最近的频繁更新),这将是很棒的.支持其他格式(如文档和视频)也不错.
我觉得这个信息应该列在某个地方,但是当我搜索时我没有找到任何这样的东西.
我完全理解所讨论的NV12格式的大小
现在我正在阅读有关以这种格式存储UV平面的两个来源:一个是https://msdn.microsoft.com/en-us/library/windows/desktop/dd206750(v=vs.85).aspx
NV12
所有Y样本首先在内存中显示为具有偶数行的无符号字符值数组.Y平面后面紧跟着一组无符号字符值,其中包含打包的U(Cb)和V(Cr)样本.当组合的UV数组作为little-endian WORD值的数组寻址时,LSB包含U值,并且MSB包含V值.NV12是DirectX VA的首选4:2:0像素格式.预计这将是支持4:2:0视频的DirectX VA加速器的中期要求.下图显示了Y平面和包含U和V样本的数组.
我的理解是:在UV平面中,每个U和V都以单字节存储.
当我从维基百科阅读这篇文章时:https: //wiki.videolan.org/YUV#NV12
它说:
NV12
与I420相关,NV12具有一个亮度"亮度"平面Y和一个具有U和V值交错的平面.在NV12中,色度平面(蓝色和红色)在水平和垂直维度上进行二次采样,系数为2.对于2x2像素组,您有4个Y样本和1个U和1个样本.将NV12视为I420与U和V平面交错是有帮助的.这是NV12的图形表示.每个字母代表一位:对于1 NV12像素:YYYYYYYY UVUV对于2像素NV12帧:YYYYYYYYYYYYYYY UVUVUVUV对于50像素NV12帧:Y*8*50(UV)*2*50对于n像素NV12帧:Y*8*n(UV)*2*n
我在这里理解的是:每个U和V在每个字节中逐位交错.因此,UV平面的每个字节将包含4U位和4V位交错.
任何人都可以澄清我的怀疑吗?