我正在尝试在HTML页面中显示多图像TIFF的第一个切片。因此,我正在尝试使用Imagemagick以某种方式将TIFF转换为广泛支持的格式,如JPG或PNG。我正在使用以下代码:
<?php
$im = new imagick('my_image.tif');
$im->setImageFormat('jpeg');
header("Content-Type: image/jpeg");
ob_start();
$thumbnail = $im->getImageBlob();
$contents = ob_get_contents();
ob_end_clean();
echo "<img src='data:image/jpg;base64,".base64_encode($thumbnail)."' />";
?>
此代码在读取JPG文件时工作正常 - 但对于TIFF文件,这会显示某些内容 - 但不会显示我的TIFF文件的内容。我想我必须提交TIFF文件属性,就像我正在创建它们一样? TIFF文件是在C程序中创建的:
TIFF* tif;
tif = TIFFOpen(filename, "w");
TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, columns);
TIFFSetField(tif, TIFFTAG_IMAGELENGTH, rows);
TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 32);
TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP);
for (i = 0; i < rows; i++)
TIFFWriteScanline(tif, &data[i * columns], i, 0);
TIFFWriteDirectory(tif);
TIFFClose(tif);
如何正确转换才能显示在我的网页上?另外,如何选择要显示的图像?理想情况下,网页的用户将能够滚动TIFF文件的切片。谢谢!
答案 0 :(得分:1)
如果你有一个多页TIFF,你可以通过在文件名后面的方括号中放置页码(从零开始索引)来提取特定页面,所以对于前两页:
convert multipage.tif[0] page1.jpg
convert multipage.tif[1] page2.jpg
我不记得获取页数的简单方法,但你可以运行这个并计算行数,直到我这样做: - )
identify multipage.tif
multipage.tif[0] TIFF 1x1 1x1+0+0 16-bit sRGB 830B 0.000u 0:00.000
multipage.tif[1] TIFF 1x1 1x1+0+0 16-bit sRGB 830B 0.000u 0:00.000
multipage.tif[2] TIFF 1x1 1x1+0+0 16-bit sRGB 830B 0.000u 0:00.000
那个有3页,编号为0-2。