Страница: 1 | 2 |
Вопрос: Размер картинки в милиметрах
Добавлено: 16.06.05 08:26
Автор вопроса: Diz | Web-сайт:
Ответы
Всего ответов: 28
Номер ответа: 16
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #16
Добавлено: 16.06.05 15:19
Кажись Twip=1/1440 Дюйма. а Дюйм=254 миллиметра
Номер ответа: 17
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #17
Добавлено: 16.06.05 15:27
2Diz
1. Твой способ сильно хуже, потому что он не показывает размер картинки. Он показывает размер рабочей области самого PictureBox'а, он никак к картинке не привязан.
2. Это не статейка а выдержка из MSDN
Чтоб было понятней - кину код
Option Explicit
Private Type BITMAPFILEHEADER
bfType As Integer
bfSize As Long
bfReserved1 As Integer
bfReserved2 As Integer
bfOffBits As Long
End Type
Private Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
Private Sub Form_Load()
Dim bfh As BITMAPFILEHEADER
Dim bih As BITMAPINFOHEADER
Dim hFile As Byte
bfh.bfSize = Len(bfh)
bih.biSize = Len(bih)
hFile = FreeFile
Open ":\Disk\PhotoShop.7_0\Setup.bmp" For Binary As hFile
Get hFile, , bfh
Get hFile, , bih
Close hFile
MsgBox CLng(bih.biXPelsPerMeter / 1000 * 25.4) & " x " & CLng(bih.biYPelsPerMeter / 1000 * 25.4)End Sub
Для jpg и прочих форматов могут различаться заголовки, узнать их формат можно в инете.
2Morpheus
Дюйм - 25,4 миллиметра
Номер ответа: 18
Автор ответа:
Diz
Вопросов: 24
Ответов: 38
Web-сайт:
Профиль | | #18
Добавлено: 16.06.05 15:35
При твоём примере у меня размеры получаются
475 X 319
Хотя должно быть
152 Х 102
А в моём случае размеры точно встают...
Вот как у меня твой выглядит
XS = frmShowPicture.Original.ScaleX(frmShowPicture.Original.Picture.Width, vbHimetric, vbMillimeters)
YS = frmShowPicture.Original.ScaleY(frmShowPicture.Original.Picture.Height, vbHimetric, vbMillimeters)
Номер ответа: 19
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #19
Добавлено: 16.06.05 15:43
152 Х 102 чего? Откуда эти цифры? Если своим методом получил - забей. Открой файл картинки графическим редактором и посмотри её оригинальные размеры в миллиметрах.
Если та же история - код + файл картинки в студию.
Номер ответа: 20
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #20
Добавлено: 16.06.05 15:46
Может у тебя картинка по размеру контрола масштабируется? Ты случаем не Image ли контрол со Stretch=True используешь?
Номер ответа: 21
Автор ответа:
Diz
Вопросов: 24
Ответов: 38
Web-сайт:
Профиль | | #21
Добавлено: 16.06.05 15:48
НЕт у меня PictureBox со свойством AutoSize=true
Номер ответа: 22
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #22
Добавлено: 16.06.05 15:49
Не, у Image нет методов Scale. Ну, в любом случае, лучше привести код с файлом. Какая-то у тебя мистика творится...
Номер ответа: 23
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #23
Добавлено: 16.06.05 15:52
Вот блин! Дык сразу бы сказал про AutoSize. Я ж тебе про этот случай написал в 9 посте!
Но еще раз говорю - отрой картинку другой прогой и посмотри её размер в миллиметрах.
Номер ответа: 24
Автор ответа:
Diz
Вопросов: 24
Ответов: 38
Web-сайт:
Профиль | | #24
Добавлено: 16.06.05 16:03
Ну так они и есть 152 Х 102 мм
Номер ответа: 25
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #25
Добавлено: 16.06.05 16:08
Ну тогда не знаю, значит оттого что у нас часовые пояса разные
У меня даже такой код при AutoSize=True
Picture1.ScaleMode = 6
MsgBox Picture1.ScaleX(Picture1.Picture.Width, vbHimetric, vbMillimeters)
MsgBox Picture1.ScaleWidth
выдает одинаковые результаты. Не знаю как у тебя получается сделать иначе...
Номер ответа: 26
Автор ответа:
Diz
Вопросов: 24
Ответов: 38
Web-сайт:
Профиль | | #26
Добавлено: 16.06.05 16:30
в фотошопе я кадрирую файл под 102 X 152 мм
А потом проверяю своим методом... получается верно.
Такпроверял с разными размерами. Вот мне и интересно, это просто совпадение или его можно использовать
Номер ответа: 27
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #27
Добавлено: 16.06.05 17:09
ты про деление на 3,125? А ScaleMode у тебя какой стоит?
Вообще вопрос не в том почему у тебя верно - ответ мы узнали (AutoSize), вопрос - почему мой метод у тебя глючит. Парадокс какой-то...
Номер ответа: 28
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #28
Добавлено: 16.06.05 17:19
Ладно, есть еще вариант, относится к коду уз 17 поста. В конец добавить строчку
MsgBox CLng(bih.biWidth / bih.biXPelsPerMeter * 1000) & "x" & CLng(bih.biHeight / bih.biYPelsPerMeter * 1000)