试图解决防止重复图像上传的问题。 我有两个JPG。 看着他们,我可以看到他们实际上是相同的。 但由于某种原因,他们有不同的文件大小(一个从备份中拉出来,另一个是另一个上传),所以他们有不同的md5校验和。 我怎样才能有效和自信地比较两幅图像,就像人类能够看到它们是完全一样的? 例如: http : //static.peterbe.com/a.jpg和http://static.peterbe.com/b.jpg 更新 我写了这个脚本: import math, operator from PIL import Image def compare(file1, file2): image1 = Image.open(file1) image2 = Image.open(file2) h1 = image1.histogram() h2 = image2.histogram() rms = math.sqrt(reduce(operator.add, map(lambda a,b: (ab)**2, h1, h2))/len(h1)) return rms if __name__=='__main__': import sys file1, file2 = sys.argv[1:] print compare(file1, file2) 然后,我下载了两个视觉相同的图像,并运行脚本。 […]
我试图在一个shell脚本中base64编码图像,并将其放入variables: test="$(printf DSC_0251.JPG | base64)" echo $test RFNDXzAyNTEuSlBH 我也尝试过这样的事情: test=\`echo -ne DSC_0251.JPG | base64\` 但仍然没有成功。 我想要做这样的事情: curl -v -X POST -d '{"image":$IMAGE_BASE64,"location":$LOCATION,"time_created":$TIMECREATED}' -H 'Content-type: text/plain; charset=UTF8' http://192.168.1.1/upload 我发现这个http://www.zzzxo.com/q/answers-bash-base64-encode-script-not-encoding-right-12290484.html 但仍然没有成功。
我有一些旧的Linux映像以平面文件格式分发,他们可以被bochs虚拟机使用,但是我需要使用Sun Virtual Box来运行它们。 Virtual Box不能使用这种格式的图像,所以我需要将这些图像从平面文件转换为.vmdk文件格式。 有没有办法做到这一点?
据说docker不是虚拟机,容器直接在主机上运行。 但为什么容器需要一个基本的映像操作系统? 如果容器中的进程在基本映像操作系统上运行,则虚拟机和docker之间的区别是什么(只有基本映像操作系统可以重新使用并保持为只读?) 为什么它比VM启动更快? 什么构成了基本的图像操作系统? 内核,rootfs还是两者?
如何使用sips , imagemagic或其他工具通过命令行将图像转换为黑白(灰度)?
我正在寻找一种快速的方法来获取像素的高度和宽度的图像。 它应该至less处理JPG,PNG和TIFF,但越多越好。 我强调速度很快,因为我的图像相当大(高达250 MB),并且需要很长时间才能获得ImageMagick identify的大小,因为它显然首先读取图像。 最好是,我寻找一种在Ruby中甚至在Rails 3中运行良好的方式。 我知道理论的东西(各种图像格式,他们的头和他们的差异,等等)。 的确,我要求一种能够以相当通用的方式解决我的问题的图书馆。 我刚刚发现http://imagesize.rubyforge.org看起来很有希望,尽pipe发展似乎已经死了。
我的问题是相当通用的,我知道可能没有100%的答案。 我正在构build一个ASP .NET Web解决scheme,其中将包括大量的图片,并希望有相当数量的stream量。 我确实想要达到性能。 我应该将图片保存在数据库还是文件系统上? 而不pipe答案,我更感兴趣的是为什么select一个特定的方式。 非常感谢,Stefan DUPLICATE : 在DB中存储图像 – 是或否? , 如何将图像存储在文件系统中 , 存储less量图像:blob或fs? 可能还有其他一些 评论:感谢您的许多很好的答案。 即使我喜欢100%数据库驱动的解决scheme,我也会select基于文件的解决scheme。 看来,今天有好的解决scheme来做我想要的数据库等,但我有一些不这样做的原因。 我将在一个托pipe的解决scheme,我有大量的存储(10GB),但只有300MB的数据库。 在数据库中额外存储会花费很多。 我不是DB专家,也不是DB的设置控制。 基于DB的解决scheme可能需要自定义configuration。 如果我们将移动到我们自己的服务器上运行该网站,我可能会考虑一个基于DB的解决scheme。 谢谢,Stefan
我正在用.NET编写一个上传函数,用于在用户configuration文件中显示图像。 我在两种不同的方式之间做出select,并想就咨询和意见征询意见。 将图像直接存储在文件系统上 将图像存储在数据库中 到目前为止,我一直主要是第一个选项 – 命名用户名后的图像,因为每个用户只能有一个演示文稿图像。 然后,如果用户有图像,如果不显示默认的“无图像”图像,则在指定的path中进行检查。 我喜欢的另一件事是它节省了DB中的空间 – 数据库将相当沉重,没有额外的二进制负载。 我相信还有其他方面,我没有想过,所以我想听听你的意见。 如果任何人有一个完全不同的解决scheme,请分享,以及!
将图像存储在数据库中的常用方法是在存储数据之前将图像转换为base64数据。 这个过程将增加33%的大小。 或者,可以将图像直接存储为BLOB ; 例如: $image = new Imagick("image.jpg"); $data = $image->getImageBlob(); $data = $mysqli->real_escape_string($data); $mysqli->query("INSERT INTO images (data) VALUES ('$data')"); 然后显示图像 <img src="data:image/jpeg;base64,' . base64_encode($data) . '" /> 采用后一种方法,我们节省了1/3的存储空间。 为什么在MySQL数据库中将图像存储为base64更为常见? 更新:关于在数据库中存储图像的优点和缺点有许多争论,大多数人认为这不是一个实际的方法。 无论如何,在这里我假设我们将图像存储在数据库中,并讨论这样做的最佳方法。
我试图显示保存在数据库中的图像字节为<p:graphicImage>的StreamedContent ,如下所示: <p:graphicImage value="#{item.imageF}" width="50" id="grpImage" height="80"/> private StreamedContent content; // getter and setter public StreamedContent getImageF() { if (student.getImage() != null) { InputStream is = new ByteArrayInputStream(student.getImage()); System.out.println("Byte :"+student.getImage()); content = new DefaultStreamedContent(is, "", student.getStuID()); System.out.println("ddd ——————————- " + content); return content; } return content; } 这将返回一个空白图像。 这是如何造成的,我该如何解决? 标准输出打印如下: INFO: Byte :[B@a2fb48 INFO: ddd […]