欢迎来到皮皮网网首页

【emqtt源码分析】【clownfish 源码】【recvfrom 源码】查看exif信息源码_“exif信息查看器”

来源:连接跟踪源码 时间:2024-11-28 20:07:42

1.如何通过c#读写(JPG格式)的查看查摘要信息
2.Linux下exif数据的获取与分析exiflinux
3.HEIF-Utility Apple HEIF工具Windows版
4.好玩儿的Docker项目10分钟搭建一个内置转换功能的图床——Picsur
5.XnViewMP免费浏览器V099多国语言绿色免费版XnViewMP免费浏览器V099多国语言绿色免费版功能简介

查看exif信息源码_“exif信息查看器”

如何通过c#读写(JPG格式)的摘要信息

       using System;

       using System.Collections.Generic;

       using System.Text;

       namespace SnhjCms.Common

       {

        /// <summary>

        /// 处理类

        /// </summary>

        public static class PictureUtil

        {

        /// <summary>

        /// 生成缩略图

        /// </summary>

        /// <param name="imgPath">原路径</param>

        /// <param name="breviaryPath">缩略图路径</param>

        /// <param name="width">缩略图宽度</param>

        /// <param name="height">缩略图高度</param>

        /// <param name="mode">生成方式</param>

        public static void MakeBreviaryPhoto(string imgPath, string breviaryPath, int width, int height, string mode)

        {

        System.Drawing.Image image = System.Drawing.Image.FromFile(imgPath);

        int x = 0, y = 0;

        int w = image.Width;

        int h = image.Height;

        switch (mode)

        {

        case "HW"://指定高度和宽度缩放(会变形)

        break;

        case "W"://指定宽度缩放,高度按比例。信息信息

        height = h * width / w;

        break;

        case "H"://指定高度缩放,源码宽度按比例。查看查

        width = w * height / h;

        break;

        case "Cut"://指定高度和宽度裁剪。信息信息

        if ((double)w / (double)h > (double)width / (double)height)

        {

        w = h * width / height;

        x = (image.Width - w) / 2;

        }

        else

        {

        h = w * height / width;

        y = (image.Height - h) / 2;

        }

        break;

        default:

        break;

        }

        //创建一个bmp

        System.Drawing.Image bmpImg = new System.Drawing.Bitmap(width,源码emqtt源码分析 height);

        //新建一个画板

        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpImg);

        //设置高质量插值法

        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

        //设置高质量,低速度呈现平滑程度

        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

        //清空画布并以透明背景色填充

        g.Clear(System.Drawing.Color.Transparent);

        //在指定位置并且按指定大小绘制原的指定部分

        g.DrawImage(image, new System.Drawing.Rectangle(0,0,width,height), new System.Drawing.Rectangle(x,y,w,h), System.Drawing.GraphicsUnit.Pixel);

        try

        {

        //以jpg格式保存缩略图

        bmpImg.Save(breviaryPath, System.Drawing.Imaging.ImageFormat.Jpeg);

        }

        catch (Exception e)

        {

        throw e;

        }

        finally

        {

        image.Dispose();

        bmpImg.Dispose();

        g.Dispose();

        }

        }

       /// <summary>

        /// 加水印

        /// </summary>

        /// <param name="filename">文件名</param>

        /// <param name="watermarkFilename">水印文件名</param>

        /// <param name="watermarkStatus">水印位置:0=不使用 1=左上 2=中上 3=右上 4=左中 ... 9=右下</param>

        /// <param name="quality">是否是高质量 取值范围0--</param>

        /// <param name="watermarkTransparency">水印透明度 取值范围1-- (为不透明)</param>

        public static void AddImageSignPic(string Path, string filename, string watermarkFilename, int watermarkStatus, int quality, int watermarkTransparency)

        {

        System.Drawing.Image img = System.Drawing.Image.FromFile(Path);

        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(img);

        //设置高质量插值法

        //g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

        //设置高质量,低速度呈现平滑程度

        //g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

        System.Drawing.Image watermark = new System.Drawing.Bitmap(watermarkFilename);

        if (watermark.Height >= img.Height || watermark.Width >= img.Width)

        {

        return;

        }

        System.Drawing.Imaging.ImageAttributes imageAttributes = new System.Drawing.Imaging.ImageAttributes();

        System.Drawing.Imaging.ColorMap colorMap = new System.Drawing.Imaging.ColorMap();

        colorMap.OldColor = System.Drawing.Color.FromArgb(, 0, , 0);

        colorMap.NewColor = System.Drawing.Color.FromArgb(0, 0, 0, 0);

        System.Drawing.Imaging.ColorMap[] remapTable = { colorMap };

        imageAttributes.SetRemapTable(remapTable, System.Drawing.Imaging.ColorAdjustType.Bitmap);

        float transparency = 0.5F;

        if (watermarkTransparency >= 1 && watermarkTransparency <= )

        {

        transparency = (watermarkTransparency / .0F);

        }

        float[][] colorMatrixElements = {

        new float[] { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f},

        new float[] { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f},

        new float[] { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f},

        new float[] { 0.0f, 0.0f, 0.0f, transparency, 0.0f},

        new float[] { 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}

        };

        System.Drawing.Imaging.ColorMatrix colorMatrix = new System.Drawing.Imaging.ColorMatrix(colorMatrixElements);

        imageAttributes.SetColorMatrix(colorMatrix, System.Drawing.Imaging.ColorMatrixFlag.Default, System.Drawing.Imaging.ColorAdjustType.Bitmap);

        int xpos = 0;

        int ypos = 0;

        switch (watermarkStatus)

        {

        case 1:

        xpos = (int)(img.Width * (float).);

        ypos = (int)(img.Height * (float).);

        break;

        case 2:

        xpos = (int)((img.Width * (float).) - (watermark.Width / 2));

        ypos = (int)(img.Height * (float).);

        break;

        case 3:

        xpos = (int)((img.Width * (float).) - (watermark.Width));

        ypos = (int)(img.Height * (float).);

        break;

        case 4:

        xpos = (int)(img.Width * (float).);

        ypos = (int)((img.Height * (float).) - (watermark.Height / 2));

        break;

        case 5:

        xpos = (int)((img.Width * (float).) - (watermark.Width / 2));

        ypos = (int)((img.Height * (float).) - (watermark.Height / 2));

        break;

        case 6:

        xpos = (int)((img.Width * (float).) - (watermark.Width));

        ypos = (int)((img.Height * (float).) - (watermark.Height / 2));

        break;

        case 7:

        xpos = (int)(img.Width * (float).);

        ypos = (int)((img.Height * (float).) - watermark.Height);

        break;

        case 8:

        xpos = (int)((img.Width * (float).) - (watermark.Width / 2));

        ypos = (int)((img.Height * (float).) - watermark.Height);

        break;

        case 9:

        xpos = (int)((img.Width * (float).) - (watermark.Width));

        ypos = (int)((img.Height * (float).) - watermark.Height);

        break;

        }

        g.DrawImage(watermark, new System.Drawing.Rectangle(xpos, ypos, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, System.Drawing.GraphicsUnit.Pixel, imageAttributes);

        System.Drawing.Imaging.ImageCodecInfo[] codecs = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();

        System.Drawing.Imaging.ImageCodecInfo ici = null;

        foreach (System.Drawing.Imaging.ImageCodecInfo codec in codecs)

        {

        if (codec.MimeType.IndexOf("jpeg") > -1)

        {

        ici = codec;

        }

        }

        System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();

        long[] qualityParam = new long[1];

        if (quality < 0 || quality > )

        {

        quality = ;

        }

        qualityParam[0] = quality;

        System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qualityParam);

        encoderParams.Param[0] = encoderParam;

        if (ici != null)

        {

        img.Save(filename, ici, encoderParams);

        }

        else

        {

        img.Save(filename);

        }

        g.Dispose();

        img.Dispose();

        watermark.Dispose();

        imageAttributes.Dispose();

        }

        /// <summary>

        /// 在上生成水印

        /// </summary>

        /// <param name="Path">原服务器路径</param>

        /// <param name="Path_syp">生成的带水印的路径</param>

        /// <param name="Path_sypf">水印路径</param>

        public static void AddWaterPic(string Path, string Path_syp, string Path_sypf)

        {

        System.Drawing.Image image = System.Drawing.Image.FromFile(Path);

        System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);

        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);

        g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);

        g.Dispose();

        image.Save(Path_syp);

        image.Dispose();

        }

        }

       }

Linux下exif数据的获取与分析exiflinux

       Linux(英文全称:Linux-kernel)是一款供个人计算机和大型服务器使用的免费操作系统,它也是查看查一种开放源码和多用户的共享软件。在现在的信息信息多媒体网络环境中,exif信息(也叫图像文件元数据信息)对于图像和视频文件非常重要,源码本文将介绍如何在Linux下获取和分析exif数据。查看查

       一、信息信息获取exif数据

       在Linux下,源码可以使用exiftool来获取exif数据。查看查首先需要在Linux上安装exiftool,信息信息一般情况下使用以下命令安装即可:

       sudo apt-get update

       sudo apt-get installlibimage-exiftool-perl

       安装完成之后,源码就可以使用命令exiftool来获取图像文件的exif数据:

       exiftool image.jpg

       这条命令会返回image.jpg文件的exif数据,包括文件的格式、大小、分辨率、拍摄时间等信息,clownfish 源码比如:

       File Size: KB

       Image Size: ×

       File Format: JPEG

       Create Date::: ::

       二、分析exif数据

       在Linux下,可以使用OpenEXIF来分析exif数据。OpenEXIF是一个用Python编写的开源库,可以用于处理exif数据,它提供了丰富的数据分析功能,比如查看的拍摄时间、分辨率、像素大小等等,比如:

       import openexif

       #读取exif数据

       image=’image_file.jpg’

       exif=openexif.Exif(image)

       #获取的拍摄时间

       timestamp=exif.timestamp

       #获取分辨率

       resolution=exif.resolution

       #获取像素大小

       pixel_size=exif.pixel_size

       print(timestamp,resolution,pixel_size)

       以上示例代码就可以查看到image_file.jpg文件的exif数据,包括拍摄时间、分辨率和像素大小。

       总结:

       在Linux下,可以使用exiftool来获取exif数据,使用OpenEXIF来分析exif数据,这样就可以轻松获取和分析图像文件的exif数据信息,为图像的处理和管理提供帮助。

HEIF-Utility Apple HEIF工具Windows版

       HEIF-Utility Apple HEIF工具,HEIF-Utility能让用户在Windows系统环境下查看Apple HEIF格式的recvfrom 源码并且对其进行转换,HEIF格式是APPLE设备生成的一个加密版本的,如果没有特殊处理智能在对应的APPLE上运行查看,HEIF-Utility能解除这一限制,并且能对其进行批量转换等高级操作,节省用户的精力。

       HEIF-Utility功能

       1.查看由 Apple 设备生成的 HEIF * / View Apple devices-generated HEIF images

*

       -在文件资源管理器显示 HEIF 略缩图 / Display HEIF images's thumbnail in File Explorer

       2.查看 EXIF 信息 / View image EXIF

       -文件属性 / File Info

       -镜头信息 / Lens Info

       -定位信息 / GPS Info

       3.将 Apple HEIF 转换为 JPEG / Convert Apple HEIF images to JPEG images

       -自定输出质量 / Custom output quality

       -包含 EXIF 元数据 / Includes EXIF metadata

       -包含色彩配置文件 / Includes Color Profile

       4.批量转换 / Batch Conversion

       -实时进度显示 / Real-time progress display

       -自动启用多线程转换** / Use MultiThreading automatically

**

       HEIF-Utility特色

       广受欢迎 / Popular

       在发布后的天内,HEIF 实用工具下载量已超过次。我们还得到了来自中国大陆、台湾、日本、俄罗斯、印度、越南等多个国家/地区的用户的高度评价。

       不含广告 / AD-Free

       HEIF 实用工具没有包含任何类似或等同于:广告推广、静默联网更新的功能。

       开放源代码 / Open Source

       我们以 “GPLv3 许可证” 和 “liuziangexit 附加许可协议 ” 公开 HEIF 实用工具 的所有代码。

好玩儿的Docker项目分钟搭建一个内置转换功能的图床——Picsur

       本文介绍了一个名为Picsur的开源图床项目,它是一个易于使用、可自托管的缩短源码分享服务,类似于Imgur,并内置转换功能。它的界面简洁,用户可以上传,设置的有效期和格式,同时还可以看到上传的所有。Picsur的特色是它包含了EXIF数据,全称为"Exchangeable Image File Format",是一种包含各种关于照片信息的数据格式,可以帮助用户更好地管理。

       在搭建Picsur的过程中,文章详细介绍了如何通过GitHub官方仓库获取项目源码,以及搭建环境的具体步骤。建议使用腾讯云的轻量应用服务器,因为其“轻量”的特点,更适合小白上手。安装系统、登陆服务器、安装Docker与Nginx Proxy Manager等步骤均有详细说明。-90源码创建安装目录、打开服务器防火墙以及访问网页的操作也都有详细的步骤指导,包括如何创建目录、如何修改文件、如何查看端口占用情况、如何进行反向代理等。

       在搭建过程中,文章还介绍了如何购买域名、如何进行域名解析和如何使用Nginx Proxy Manager进行反向代理的详细步骤。对于使用宝塔面板的用户,文章也提供了反向代理的配置方法。使用教程部分提供了如何使用Picsur和如何更新以及卸载项目的指导,同时强调了项目的维护和开发需要大家的共同参与和支持。

       文章结尾对使用过程中可能出现的问题进行了总结,并鼓励用户在遇到问题时在GitHub上提Issues或在评论区交流,同时也欢迎有能力的用户参与到项目中来,为项目的开发贡献自己的力量。最后,文章表达了对项目开发人员的感谢。

XnViewMP免费浏览器V多国语言绿色免费版XnViewMP免费浏览器V多国语言绿色免费版功能简介

       大家好,关于XnViewMP(免费浏览器) V0. 多国语言绿色免费版,XnViewMP(免费浏览器) V0. 多国语言绿色免费版功能简介这个很多人还不知道,现在让我们一起来看看吧!

        xnviewmp是一款用户体验非常好的免费浏览器,它能够支持多种格式,而且还具有浏览器、幻灯片、屏幕捕捉、缩略图制作、批处理转换、十六进制浏览、拖放、通讯录、扫描输入等实用功能。

       xnviewmp 作为xnview的增强版本,不但增强了软件功能,还采用了跨平台的新架构,它可以实现多平台的支持而且软件基于同样的源代码,就连界面和操作体验也是相同的。

       XnView是一个图像浏览器和多媒体播放器。它能够支持大约种文件格式,比如说ping,jpeg,targa,tiff,gif,bmp等。XnView同时还支持动画gif,多页面tiff,多图像图标以及mpeg,avi,wav,aiff和Quicktime格式的文件。此外,XnView还具有浏览器,幻灯片,屏幕捕捉,缩略图制作,批处理转换,十六进制浏览,拖放,通讯录,扫描输入等功能。该软件支持种语言,并能够在Linux/FreeBSD/Irix/Solaris/HP-UX/AIX等操作系统中使用。

       XnView 除了一般的查看,浏览,幻灯显示等功能外,还自带多种滤镜,方便编辑修改;可以批量转换文件格式,创建缩略图并生成网页,还可自己制作GIF,小巧实用。 选择安装“资源管理器右键菜单扩展插件”,可在资源管理器右键菜单中增加预览功能!

功能特点

       1、支持格式多,实用功能丰富;

       XnView支持多种格式的浏览,足可以解决看图的后顾之忧。对于非格式的文件,XnView可以设置为用十六进制查看,“工具”→“选项”,勾选“杂项”里的“若不是则以十六进制查看”;对于数码照片还可以直接读取照片的EXIF信息,“工具”→“选项”,勾选“读取”里的“存在的话,使用EXIFDPI信息”即可。

       软件内置了屏幕截图功能,可以让你轻松地截取指定的屏幕截图,而无须再安装其他截图软件。软件还内置了很多滤镜,即使并不是很专业的你,也可以瞬间处理出一张具有专业水准的相片来。

       2、体积小巧,使用简单;

       整个程序才不到MB,与ACDSee那MB的体积相比,显得非常苗条。相比ACDSee使人诟病的启动速度,Xnview的启动速度比ACDSee快得多,而它使用起来更比ACDSee顺手很多,安装后即可上手,所有的操作都可以瞬间掌握。软件本身就内置了中文简体语言,对于国人来说,更方便。

       3、浏览方便、实用;

       XnView的浏览功能无须多说,和ACDSee大同小异。XnView默认的设置是子窗口适应大小,如果你觉得不习惯,可以在“工具”→“选项”里的“查看”设置项中勾选“打开时最大化”,这样就和ACDSee的感觉无异了。在这里你会发现,XnView为了配合用户习惯,可以定制的操作设置非常多。