Articles of 图像

我正在寻找可以在graphics编辑程序中进行的任何优化

嘿哟,这是我第一次在这里问一个问题,所以如果我把事情搞得一团糟,就原谅我 我正在开发类似于openCanvas的程序,早期的程序允许多人在互联网上实时绘制相同的canvas。 OC的确很麻烦,而且有很多限制,所以我想写这个。 我已经设置了canvas,使canvas在所有方向上“无限”地延伸,并由512×512像素块组成,这些像素在被绘制之前不会变得活跃,这应该很容易制作,而且我正在考虑使用Direct3D使硬件加速,从而达到512平方块。 我的问题来了,当我想要使用图层,我不太确定如何快速构build图层,而不使用大量的内存,因为我的目标是128M内存的DirectX9兼容video卡,以及约3.2 ghz的系统的CPU的功率和2至8演出之间的RAM。 我有几种不同的方法,我正在考虑使用,并想知道哪个可能是最好的,如果有什么我可以研究,使其运行更好。 我的第一个想法是通过让所有块上的所有图层都作为纹理来使gfx硬件尽可能多地工作,并且通过locking更改的区域,在CPU上更新它们并解锁它们来更新它们。 当前未被更改的块被拼合成一个纹理,并且单独的图层本身保存在系统内存中,这将减less使用的gfx内存,但是会显着增加系统和gfx内存之间的带宽使用。 我可以看到不断的locking和解锁,可能会减慢系统的速度。 另一个可能的问题是,我听说有人使用200层,我想不出有什么好的方法来优化给定的上述。 我的另一个想法是将系统内存中的纹理完全合成,将它们写入纹理,然后将纹理复制到gfx内存以在每个块中渲染。 这似乎消除了其他方法中的很多问题,但同时我将所有工作都移到了CPU中,而不是平衡它。 但是,只要它仍然很快运行,这并不是什么大问题。 然而,再次,有几百层的问题。 在这种情况下,我可能只能更新实际上正在改变的最终像素,这是我认为像Sai和Photoshop这样的大型程序所做的。 我主要是在寻找build议,可能改善上述的build议,更好的方法,或链接到可能与这样的项目有关的文章。 当我用C ++编写它时,我从其他语言翻译没有麻烦。 谢谢你的时间〜

当LAMP服务器上有数百万用户时,什么是最快和最有效的存储和提取图像的方式?

这是迄今为止我提出的最好的方法,我想知道是否有一个更好的方法(我确定有!)来存储和获取数以百万计的用户图像: 为了保持目录的大小,并避免对数据库进行任何额外的调用,我使用基于用户的唯一ID计算的嵌套目录如下: $firstDir = './images'; $secondDir = floor($userID / 100000); $thirdDir = floor(substr($id, -5, 5) / 100); $fourthDir = $userID; $imgLocation = "$firstDir/$secondDir/$thirdDir/$fourthDir/1.jpg"; 用户ID( $userID )的范围从1到数百万。 所以,如果我有用户ID 7654321 ,例如,该用户的第一张照片将被存储在: ./images/76/543/7654321/1.jpg 对于用户ID 654321 : ./images/6/543/654321/1.jpg 对于用户ID 54321 ,它将是: ./images/0/543/54321/1.jpg 对于用户ID 4321 ,它将是: ./images/0/43/4321/1.jpg 对于用户ID 321 ,它将是: ./images/0/3/321/1.jpg 对于用户ID 21 ,它将是: ./images/0/0/21/1.jpg 对于用户ID 1 ,它将是: ./images/0/0/1/1.jpg 这确保了用户高达100,000,000,我永远不会有一个目录超过1000个子目录,所以它似乎保持干净和高效。 […]

jpegtran优化而不改变文件名

我需要优化一些图片,但不能改变他们的名字。 jpegtran -copy none -optimize image.jpg > image.jpg 但是,这似乎创build一个0的文件大小。当我做到不同的文件名,大小仍然是完全一样的。

最适合约250,000个图像的网页文件夹结构

我将有大约20万张图片作为我网站的一部分。 每个图像将被存储3次:全尺寸,缩略图,更大的缩略图。 全尺寸图像大约在50Kb到500Kb之间。 正常的技术:在VPS上的Linux,Apache,MySQL,PHP。 什么是最佳的方式来存储这些通过浏览器快速检索和显示? 我应该将所有内容存储在一个文件夹中吗 我应该存储全尺寸的图像在一个文件夹,在另一个缩略图等? 我应该将图像存储在1000个文件夹中,并且保留图像所在的文件夹的索引? 感谢您的任何build议。 伟业。

docker图像和容器在Windows中使用时存储在哪里?

注意:对于Windows和Docker来说都是超新的 我一直在使用的教程说,如果我们使用Linux,它们位于/var/lib/docker/containers ,但我似乎无法在Windows机器上find它。 谢谢!

如何在Windows上使用Java在默认图像查看器中打开图像?

我有一个button来查看附加到日志条目的图像,当用户单击该button时,我希望它打开Windows机器上用户的默认图像查看器中的图像? 如何知道默认图像查看器中的哪个查看器? 现在我正在做这样的事情,但它不工作: String filename = "\""+(String)attachmentsComboBox.getSelectedItem()+"\""; Runtime.getRuntime().exec("rundll32.exe C:\\WINDOWS\\System32\\shimgvw.dll,ImageView_Fullscreen "+filename); 而通过不工作,我的意思是它什么都不做。 我试图只在命令行运行命令,什么也没有发生。 没有错误,没有。

在Windows文件夹中是否有任何C ++ lib从thumb.db中读取缩略图?

我想从Windows XP中的图像文件夹中读取所有的缩略图。 但是,如果我读取图像文件来获取缩略图,它似乎有点慢,所以我希望我可以先读取Windows图像缩略图caching:thumb.db。 在c ++或c中是否有任何lib从thumb.db中读取缩略图?

如何将BMP像素值读入数组?

我用C ++编写代码(在Windows上),我试图提取灰度bmp的像素值。 我不关心保留任何元数据,只想将像素值存储在char数组中。 我一直无法find一个手动的标准或“典型”的方式,所以我想知道是否有一个简单的库,人们用来加载位图到内存中。 提前致谢!

在c ++中使用伽马校正来转换jpeg

我有一个图像img.jpg,我想要使用线性伽马校正将其转换为newImg.jpg。 我发现如何使用terminal做到这一点: convert img.jpg -gamma valueOfgamma newImg.jpg 但是现在我想在我的C ++程序中做到这一点。 我如何使用imagemagick ++或openCv做到这一点? 谢谢

C#将32bpp图像转换为8bpp

我正试图使用​​C#将32bpp截图转换为8bpp(或4bpp或1bpp)格式。 我已经看过几个类似的主题stackoverflow的答案,并且大多数build议使用以下代码的变体: public static Bitmap Convert(Bitmap oldbmp) { Bitmap newbmp = new Bitmap(oldbmp.Width, oldbmp.Height, PixelFormat.Format8bppIndexed); Graphics gr = Graphics.FromImage(newbmp); gr.PageUnit = GraphicsUnit.Pixel; gr.DrawImageUnscaled(oldbmp, 0, 0); return newbmp; } 但是,执行此操作时,我遇到了一个例外情况: A graphics object cannot be created from an image that has an indexed pixel format 。 我知道8,4和1bpp图像有颜色表映射,而不是实际的颜色像素本身(如在32或16bpp图像),所以我假设我错过了一些转换步骤的地方,但我相当新的C#从一个C + +背景),并希望能够做到这一点使用本地C#调用,而不是诉诸PInvoking BitBlt和GetDIBits等任何人能够帮助我解决这个问题? 谢谢。 编辑 :我应该指出,我需要这个向后兼容.NET框架2.0