史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   VB6.0載入圖片解析度限制 (http://forum.slime.com.tw/thread251106.html)

chung1206 2009-08-04 04:12 PM

引用:

作者: mini (文章 2180758)
DPI 只是告訴印表機排版系統
這張圖要印出的解析度
如果 DPI大於 像素值
那這個 DPI就沒意義
所以 DPI不能大於像素值

比如
某張圖其 寬=150像素
而 DPI裡的 水平解析度 卻是 300
那像 Photoshop這種智慧專業軟體
就會做出調整

你的程式應該根據要列印的長寬
而倒過來算出 最佳DPI才對
而不是活生生硬著頭皮規定 DPI


感謝版大分享此觀念,那我若想更動像素的話,只需要將sDPI的部份改成pixels就可以了嗎?還是整個語法要重寫?謝謝。
PS:我用另一個方式問,有沒有辦法讓它載入後不改變像素的方式?因為我第一次做的時候是沒問題的,但當時有個問題是
原本一張5M多的檔案載入合併後存檔變成40幾M,後來一直詢問改良變成這樣,但已經忘了那時候到底是什麼方式使它不會
改變原本的像素,謝謝。

mini 2009-08-04 10:01 PM

BMP 為未壓縮圖檔
所以一張是 5MB的話 八張就等於5*8=40MB

其實可以用兩種算式來自動換算 DPI
ChangeFileDPI .FileName, (Picture1.ScaleWidth / 5.516) / 15 '因為1 Pixels = 15 Twip

ChangeFileDPI .FileName, (Picture1.ScaleHeight / 3.546) / 15 '因為1 Pixels = 15 Twip

原理:
兩吋大頭照: 3.5cm*4.5cm = 1.379in*1.773in (1cm = 0.394in)
並連四張*串連兩張 兩吋照 = 5.516in*3.546in

如果 Picture1.ScaleMode = 3(Pixels)
5.516in=Picture1.ScaleWidth /iDPI
3.546in=Picture1.ScaleHeight /iDPI
假設 水平dpi = 垂直dpi
iDPI = Picture1.ScaleWidth / 5.516 = Picture1.ScaleHeight / 3.546
所以
正確的方法是先調整你的 image 之Width、Height
使他長寬比更接近 4.5/3.5 之比例
並將 image間的空隙 保留出來
因為洗出來時要有裁切的保留空間

還有一點

Picture1.ScaleMode = 1(Twip)
Picture1.Appearance = 0(平面)

Picture1.ScaleWidth 與 Picture1.Width 數值是相同的
如果
Picture1.Appearance = 1(立體)
Picture1.Width 會比 Picture1.ScaleWidth 多出一些
所以
你的程式
Picture1.Width = Image1(0).Width * 4
Picture1.Height = Image1(0).Height * 2
應該改成
Picture1.Width = Image1(0).Width * 4 + (Picture1.Width - Picture1.ScaleWidth) '+ 一點空隙
Picture1.Height = Image1(0).Height * 2 + (Picture1.Height - Picture1.ScaleHeight) '+ 一點空隙

所以幫你大概改了些 (image的長、寬 及一些程式碼修飾)
http://touch.moehome.jp/up_ssize/dow...901.rar/attach
按下網頁的http://xs839.xs.to/xs839/09224/download372.png 按鈕(旁邊填 mini)即可下載

chung1206 2009-08-08 11:05 AM

引用:

作者: mini (文章 2180758)
DPI 只是告訴印表機排版系統
這張圖要印出的解析度
如果 DPI大於 像素值
那這個 DPI就沒意義
所以 DPI不能大於像素值

比如
某張圖其 寬=150像素
而 DPI裡的 水平解析度 卻是 300
那像 Photoshop這種智慧專業軟體
就會做出調整

你的程式應該根據要列印的長寬
而倒過來算出 最佳DPI才對
而不是活生生硬著頭皮規定 DPI

感謝大大,我再想想。


所有時間均為台北時間。現在的時間是 08:34 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1