全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1634
推到 Plurk!
推到 Facebook!

如何正碓轉換TIFF To JPEG

答題得分者是:GrandRURU
g6101
高階會員


發表:22
回覆:129
積分:110
註冊:2002-06-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-05-26 22:29:02 IP:118.168.xxx.xxx 訂閱
如題:
※來源影像描述
格式:TIFF
色彩:CMYK
解析:240(DPI)
尺寸:浮動(不固定)
用途:印刷(排版)
※目標影像描述
格式:JPEG
色彩:RGB
解析:72(DPI)
尺寸:寬=480 Pixel(固定)/高=(按寬等比縮放)
用途:互聯網(網頁)
※問題描述
‧總覺得用底下的代碼,轉出來的影像與 Photoshop 轉出來的影像,不管色彩或質量,都有些許的落差。
‧代碼要如何修改,才可得到比較高 JPEG 質量,請大俠幫忙,感謝!
‧元件版本為 HiComponents software ImageEn v3.1.2

[code cpp]
//---------轉換TIFF To JEPG--------------------------------------------------
void __fastcall TMainForm::ConvertTiffToJpg(const UnicodeString ExistingFile,const UnicodeString TargetFolder)
{
UnicodeString JpgFileName = InsPathDelimiter(TargetFolder) ChangeFileExt(ExtractFileName(ExistingFile),L".JPG");
//載入 TIFF 影像檔
ImageEnIO1->LoadFromFileTIFF(ExistingFile);
//設置影像解析度
ImageEnIO1->Params->Dpi = 72;
ImageEnIO1->Params->FileType = ioJPEG;
//一個像素使多少位元組(1,3,4)
ImageEnIO1->Params->SamplesPerPixel = 4;
//使用多少 bits 作為圖像空間(1,2..7,8,16,32)
ImageEnIO1->Params->BitsPerSample = 8;
//設置 JPEG 質量
ImageEnIO1->Params->JPEG_Quality = 100;
ImageEnIO1->Params->JPEG_ColorSpace = ioJPEG_YCbCr;
ImageEnIO1->Params->JPEG_CromaSubsampling = ioJPEG_NONE;
ImageEnProc1->AttachedIEBitmap = ImageEnIO1->IEBitmap;
//變更影像尺寸為 480/(-1=自動等比率)
ImageEnProc1->Resample(480,-1,rfBicubic);
ImageEnProc1->Update();
//ImageEnIO1->DoPreviews(TPreviewParams() << ppJPEG);
//存入 JPEG 影像檔
ImageEnIO1->SaveToFileJpeg(JpgFileName);
}
[/code]

編輯記錄
g6101 重新編輯於 2011-05-26 08:32:28, 註解 無‧
g6101 重新編輯於 2011-06-02 18:08:01, 註解 無‧
GrandRURU
站務副站長


發表:235
回覆:1655
積分:1753
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-05-27 15:59:27 IP:59.120.xxx.xxx 未訂閱
這應該是這元件內部演算的問題吧,如果有source就自己改改看

不然問作者或許會比較快一點


===================引 用 g6101 文 章===================
如題:
※來源影像描述
格式:TIFF
色彩:CMYK
解析:240(DPI)
尺寸:浮動(不固定)
用途:印刷(排版)
※目標影像描述
格式:JPEG
色彩:RGB
解析:72(DPI)
尺寸:寬=480 Pixel(固定)/高=(按寬等比縮放)
用途:互聯網(網頁)
※問題描述
‧總覺得用底下的代碼,轉出來的影像與 Photoshop 轉出來的影像,不管色彩或質量,都有些許的落差。
‧代碼要如何修改,才可得到比較高 JPEG 質量,請大俠幫忙,感謝!
‧元件版本為 HiComponents software ImageEn v3.1.2

[code cpp]
//---------轉換TIFF To JEPG--------------------------------------------------
void __fastcall TMainForm::ConvertTiffToJpg(const UnicodeString ExistingFile,const UnicodeString TargetFolder)
{
UnicodeString JpgFileName = InsPathDelimiter(TargetFolder) ChangeFileExt(ExtractFileName(ExistingFile),L".JPG");
//載入 TIFF 影像檔
ImageEnIO1->LoadFromFileTIFF(ExistingFile);
//設置影像解析度
ImageEnIO1->Params->Dpi = 72;
ImageEnIO1->Params->FileType = ioJPEG;
//一個像素使多少位元組(1,3,4)
ImageEnIO1->Params->SamplesPerPixel = 4;
//使用多少 bits 作為圖像空間(1,2..7,8,16,32)
ImageEnIO1->Params->BitsPerSample = 8;
//設置 JPEG 質量
ImageEnIO1->Params->JPEG_Quality = 100;
ImageEnIO1->Params->JPEG_ColorSpace = ioJPEG_YCbCr;
ImageEnIO1->Params->JPEG_CromaSubsampling = ioJPEG_NONE;
ImageEnProc1->AttachedIEBitmap = ImageEnIO1->IEBitmap;
//變更影像尺寸為 480/(-1=自動等比率)
ImageEnProc1->Resample(480,-1,rfBicubic);
ImageEnProc1->Update();
//ImageEnIO1->DoPreviews(TPreviewParams() << ppJPEG);
//存入 JPEG 影像檔
ImageEnIO1->SaveToFileJpeg(JpgFileName);
}
[/code]

g6101
高階會員


發表:22
回覆:129
積分:110
註冊:2002-06-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-05-27 21:17:44 IP:218.167.xxx.xxx 訂閱
GrandRURU兄:
感謝您的回帖,並提供思路.先結帖,回頭再爬說明檔!若有成果再公布.
ckc5168
一般會員


發表:3
回覆:10
積分:2
註冊:2002-08-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-06-01 17:25:05 IP:114.32.xxx.xxx 訂閱
看起來應該是在轉換縮圖時 圖片變解析變調
ckc5168
一般會員


發表:3
回覆:10
積分:2
註冊:2002-08-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-06-01 17:42:59 IP:114.32.xxx.xxx 訂閱
要幫你看code 可是
ImageEn v3.1.2 官網無法下載
系統時間:2017-12-12 10:19:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!