該決議沒有改變的像素數,只是一個像素的顯示尺寸 - 提高分辨率使得顯示更大,但不會使文件較大。
如果您製作一個反覆重複相同信息的JPEG文件,它會變得更大 - 壓縮是基於8x8單元的 - 如果您有更多的單元格,您將擁有更多的數據。爲了使它們更大,編碼質量設置爲100.另一件事,JPEG以單元爲基礎去除亮度,因此色調變化壓縮比亮度變化更差。
我使用我公司的產品DotImage,用此代碼創建10mb jpg。你可以下載一個eval並嘗試一下,或者用你的圖像SDK做同樣的事情。
using System;
using System.Drawing;
using Atalasoft.Imaging;
using Atalasoft.Imaging.Codec;
using Atalasoft.Imaging.Drawing;
namespace MakeLargeImage
{
class Program
{
static void Main(string[] args)
{
AtalaImage img = new AtalaImage(1000, 8000, PixelFormat.Pixel24bppBgr);
Canvas c = new Canvas(img);
for (int block = 0; block < img.Height; block += 1000)
{
for (int line = 0; line < 1000; line += 4)
{
int y = block + line;
c.DrawLine(new Point(0, y), new Point(img.Width, block), new AtalaPen(Color.Yellow));
c.DrawLine(new Point(0, y + 1), new Point(img.Width, y + 1), new AtalaPen(Color.Red));
c.DrawLine(new Point(0, y + 2), new Point(img.Width, y + 2), new AtalaPen(Color.Green));
c.DrawLine(new Point(0, block), new Point(img.Width, y + 3), new AtalaPen(Color.Blue));
}
}
JpegEncoder jpeg = new JpegEncoder(100);
img.Save("10mb.jpg", jpeg, null);
}
}
}
如果您使圖像像素尺寸變大,JPEG文件將變大。您也可以添加元數據,但由於存在一些大小限制,僅僅使用元數據很難獲得大文件。
PDF是最簡單的 - 只需製作一個帶有未壓縮圖像的大頁面並不斷添加頁面 - 它會變得很快 - 除非打開它,否則不會進行壓縮。您可以在DotImage中使用PdfEncoder
輕鬆完成此操作 - 只需在FileSystemImageSource
中給出一個jpgs列表 - 代碼不會顯示爲不會泄漏任何人,但我很樂意將其提供給任何需要它的人 - 只需請致電Atalasoft並要求我(或打開支持案例並引用此問題)
我希望我可以選擇兩個答案。我回答了這個問題,因爲你揭示了一些潛在的過程,這會使這成爲一個挑戰。雖然,我可能會使用Nifle的代碼作爲掌握這些信息的起點。 – 2009-12-14 14:16:00