我有4个小的tiff图像,我想通过合并4个单个图像来生成一个大图像.有没有人知道如何直接使用Delphi或一些可以做到的好组件?
当在 CSS 文件中定义并在索引文件中调用时,图像 (logo.tiff) 将不会显示。
但是,当我将其保存为另一种格式(例如 gif 或 jpeg)时,它工作得很好。是否有原因或解决方法?
谢谢你们。
CSS文件:
.logo{
float:left;
overflow:hidden;
text-indent:-9999px;
background:url(../images/logo.tiff) no-repeat;
width:218px;
height:103px;
}
Run Code Online (Sandbox Code Playgroud)
索引.html文件:
<h1 class="logo"><a href="#">Our Slogan Here</a></h1>
Run Code Online (Sandbox Code Playgroud) MacOS 10.7.4带有具有144 DPI图像代表的新图标。不好的是,当我在NSImage中加载这些图标之一时,我只会得到512px大小的代表。我的意思是:我在NSImage中加载一个1024px / 144dpi的icns文件,然后询问每个图像代表的大小...没有代表的大小为1024px,我只能得到最大的大小。512像素(无论某个代表的分辨率为72dpi而不是144dpi,实际上:10.7.4中的新图标(例如TextEdit或Automator)对于每种尺寸都有两种分辨率的代表,唯一的代表是1024px(144dpi的单个代表存在该分辨率) )。
难道NSImageRep似乎不了解其真实分辨率?为什么我仅针对1024px / 144dpi而不是例如512px / 144dpi出现此问题?
如果我读取了NSImage的TIFFRepresentation并将其写回到文件中,则会得到正确的1024px / 144dpi TIFF文件,而如果我通过CGImageSource / CGImageDestination编写与kUTTypeTIFF相同的NSImage,则会得到1024px / 72dpi文件。
所有这些使我感到非常困惑。
非常感谢
我正在尝试将 PDF 转换为 tif 图像。我使用以下代码按格式获取图像编写器。
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("TIFF");
if (writers == null || !writers.hasNext()) {
throw new ImageWritingException();
}
Run Code Online (Sandbox Code Playgroud)
当我在 Eclipse 中独立运行应用程序时,这很好用。但是当我将应用程序部署到 linux 中的 tomcat 服务器时,writers==null是假的,但!writers.hasNext是真导致抛出异常。
我使用 maven 将项目构建为战争。
我在 pom 文件中有以下依赖项。
<dependency>
<groupId>org.icepdf</groupId>
<artifactId>icepdf-core</artifactId>
</dependency>
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai_imageio</artifactId>
</dependency>
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai-codec</artifactId>
</dependency>
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_core</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
两种环境之间有什么区别?我该如何解决这个问题?
我想知道是否有任何方法可以使用客户端编码(而不是服务器端)在浏览器中显示多页 tif 图像,以便用户可以像常见的 jquery 照片库一样在页面之间导航。我从https://github.com/seikichi/tiff.js找到了 Tiff.js ,但是这个库只提供了多页 tiff 的下载链接,并且不以 html 形式显示它。
我可以在服务器端使用 ImageMagic、LibTiff.Net 等库来完成此操作,但我不想这样做,因为照片数量巨大,如果我这样做,会消耗大量服务器的 cpu
你知道有什么替代解决方案吗?
我有一个图像序列,我试图在特定的帧上运行脚本.我需要切换到这个框架并将其转换为数组.但是,我无法将框架作为实例<TiffImagePlugin.TiffImageFile image mode=I;16 size=512x512 at 0x104A0C998>.如何将此实例转换为数组?我已经使用过numpy.array但它不起作用.谢谢!
prot=Image.open("F23BN.tif")
for frame in ImageSequence.Iterator(dna):
if frame==16:
frame.convert('L')
print frame.mode, frame.format #I checked the format and it is still in the Instance format
Run Code Online (Sandbox Code Playgroud) 当我打开tiff格式的16位图像时,它会打开为黑色图像.16位tiff图像仅在程序ImageJ中打开; 但是,它不会在预览中打开.我想知道我现在的选择是以更简单的方式查看格式,而不是降低分辨率而不是打开ImageJ来查看它.我应该将其转换为8位格式,但是当格式从16位减少到8位时,我不会丢失数据吗?另外,我正在考虑将tiff图像转换为jpeg,但这会导致分辨率降低吗?
所以这是我的源码tif图像:
$ identify -verbose source.tif
Image:
Format: TIFF (Tagged Image File Format)
Class: DirectClass
Geometry: 512x512+0+0
Resolution: 72x72
Print size: 7.11111x7.11111
Units: PixelsPerInch
Type: Palette
Base type: TrueColor
Endianess: MSB
Colorspace: RGB
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 1-bit
Run Code Online (Sandbox Code Playgroud)
我尝试过:convert source.tif output.png
以下是结果:
$ identify -verbose output.png
Format: PNG (Portable Network Graphics)
Class: DirectClass
Geometry: 512x512+0+0
Resolution: 28.34x28.34
Print size: 18.0663x18.0663
Units: PixelsPerCentimeter
Type: Palette
Endianess: Undefined
Colorspace: RGB
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit …Run Code Online (Sandbox Code Playgroud) 我可以通过PIL读取TIFF图像文件...
im = Image.open('FRONT200BW_1.TIF')
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式查看TIFF标头:
im.tag[270]
'returned description'
Run Code Online (Sandbox Code Playgroud)
这是我碰到砖墙的地方。我需要摆弄Artist(315),Date_Time(306),Document_Name(269),Image_Description(270)和Page_Name(285),然后将文件保存回磁盘,而无需对图像数据进行其他更改任何其他标头值/标签。
看来我应该能够执行以下操作:
im.tag[270] = 'my new description'
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,有趣的事情发生了...
如果我对该文件执行save()并进行检查,则它没有新的描述标头,实际上会丢失所有标头值。
当我检查之前通过的价值
im.tag.tags
Run Code Online (Sandbox Code Playgroud)
我得到的是一个字典外观的东西,返回了一个字符串,用于描述文件中先前存在的描述。在如上所述更改它并查看im.tag.tags之后,它会将键270的值从字符串更改为元组。就像我说的,保存它似乎会擦除所有标头。
如何更改这些标头值?
首先,我将 tiff 的帧保存到位图列表中:
public Bitmap SaveTiffAsTallPng(string filePathAndName)
{
byte[] tiffFile = System.IO.File.ReadAllBytes(filePathAndName);
string fileNameOnly = Path.GetFileNameWithoutExtension(filePathAndName);
string filePathWithoutFile = Path.GetDirectoryName(filePathAndName);
string filename = filePathWithoutFile + "\\" + fileNameOnly + ".png";
if (System.IO.File.Exists(filename))
{
return new Bitmap(filename);
}
else
{
List<Bitmap> bitmaps = new List<Bitmap>();
int pageCount;
using (Stream msTemp = new MemoryStream(tiffFile))
{
TiffBitmapDecoder decoder = new TiffBitmapDecoder(msTemp, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
pageCount = decoder.Frames.Count;
for (int i = 0; i < pageCount; i++)
{
System.Drawing.Bitmap bmpSingleFrame = Worker.BitmapFromSource(decoder.Frames[i]);
bitmaps.Add(bmpSingleFrame);
}
Bitmap …Run Code Online (Sandbox Code Playgroud) 我想打开 .tif 图像,但我尝试使用的每个库总是出现错误。我尝试使用 PIL:
from PIL import Image
img = Image.open('filepath/img_name.tif')
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
UnidentifiedImageError:无法识别图像文件“filepath/img_name.tif”
(这个错误并不意味着我找不到该文件,所以目录应该是好的)
我尝试使用 tifffile:
import tifffile
img = tifffile.imread('filepath/img_name.tif')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
NotImplementedError:不支持将 14 位整数解包为 uint16。
我很确定问题是图片,因为我尝试在互联网上打开一个 tif 图像,它只需这样做即可工作:这就是图片
from PIL import Image
im = Image.open('a_image.tif')
Run Code Online (Sandbox Code Playgroud)
有没有办法将 14 位图片转换为 16 位图片?(我知道我可以乘以 4 得到 16 位,但我不知道如何)
有没有办法使用命令行工具逐像素比较 .tiff 文件?
例如:
输入: 工具 image1.tiff image2.tiff
输出: True (bool)(如果相同),False (bool)(如果发现差异)
也许还有 Java 代码/工具?
先感谢您!
我试图用来image1.Picture.LoadFromFile(MyTiffFile)加载tiff文件Timage,但不支持tiff.
有没有办法在不使用任何第三方库的情况下实现这一目标?
tiff ×13
python ×3
delphi ×2
imagemagick ×2
java ×2
16-bit ×1
8-bit ×1
asp.net ×1
bitmap ×1
c# ×1
command-line ×1
compare ×1
css ×1
delphi-2007 ×1
gif ×1
image ×1
imagej ×1
javascript ×1
jquery ×1
maven ×1
nsimage ×1
nsimagerep ×1
objective-c ×1
png ×1
size ×1
tomcat ×1