1.如何通过c#读写(JPG格式)的查看查摘要信息
2.Linux下exif数据的获取与分析exiflinux
3.HEIF-Utility Apple HEIF工具Windows版
4.好玩儿的Docker项目10分钟搭建一个内置转换功能的图床——Picsur
5.XnViewMP免费浏览器V099多国语言绿色免费版XnViewMP免费浏览器V099多国语言绿色免费版功能简介
如何通过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,源码jvm加锁本地源码 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数据,包括文件的格式、大小、分辨率、拍摄时间等信息,波浪结构密码源码比如:
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格式的成都培训源码时代并且对其进行转换,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等步骤均有详细说明。淘宝控价源码创建安装目录、打开服务器防火墙以及访问网页的操作也都有详细的步骤指导,包括如何创建目录、如何修改文件、如何查看端口占用情况、如何进行反向代理等。
在搭建过程中,文章还介绍了如何购买域名、如何进行域名解析和如何使用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为了配合用户习惯,可以定制的操作设置非常多。