ПредишенСледващото

Здравейте скъпи ценителите на Delphi!

Трябва да се покаже изображение JPEG тип чрез компонент TImage (като субстрат за обикновена употреба vectorizer). По принцип, всичко работи, г-н Оя изведнъж се сблъскват с факта, че аз не мога да получите възможно най-размера на JPEG-образ в сантиметри (извлича от недрата на резолюция TImage "пиксела до нещо" или абсолютен размер на пикселите в същото време да не работи).

Моля, кажете ми как да се реши този проблем.

С благодарност към всички, които реагират,
Виталий

издадат мини-форум

За да направите това, което трябва да знаете разделителната способност на екрана (пиксела / инч) вертикално и хоризонтално към текущата монитора. Това се прави с помощта GetDeviceCaps (функция).

Аз правя лаборатории и kursachi на Delphi и Turbo Pascal. За бирата! Напиши в лично, и по-добре в ICQ. И още по-добре - обадете се на Skype!

Опитах да се направи като се препоръчват мин @ у ™. Въпреки това, следните код фрагмент дава нула за резолюцията на монитора и вертикалните и хоризонтални посоки.
Същото се получава, ако резолюцията на искане на работния плот.
Правя нещо не е наред?

Tick ​​"прочете потвърждение" - универсален зло.

По съвет на Вадим За да промените кода, така че
и, съответно, така че
И все пак се върне на нула. В цикъл съм убеден, че и двата оператора задача всъщност прави. Може би беше просто "манипулатор" устройство погрешно аз замени?

Спомням си, че можете да се опитате Монитори [в] .PixelsPerlnch
както е видно от името - броя на пиксела на инч. Спомни си, че инч е 25.4 mm, могат лесно да преминат към метричната система.

Tick ​​"прочете потвърждение" - универсален зло.

По съвет на Вадим За да промените кода, така че
(PixelsPerlnch имот е дефинирано в класа и няма TScreen класна стая TMonitor). С оглед на това изменение, - наистина работи, но абсолютният размер на изображението се определя неправилно.

По-специално, такъв метод да получа резолюция екран (96) и JPEG-файлови свойства, посочени резолюция от 300 пиксела на инч (същите, както е показано и PhotoShop).

Е, защо хората идват с "простота" на въпроса си.
Е, не е нужно да се направи това. И вие няма да получите от "грешни отговори."

Нека просто кажем, при показване на снимката, тя може да бъде показана като един пиксел пиксел-към-, и като се вземе предвид резолюцията е посочено във файла. класът има свойство TJPEGImage DPI, което трябва да ви покаже дългоочакваното 300.


В BMP подаде такова нещо, тъй като няма DPI, но тя се губи, когато зареждането на JPG файл. (По-точно, тя може да се използва за мащабиране на изображението по време на зареждане).

Tick ​​"прочете потвърждение" - универсален зло.

Чрез Вадим написа: Е, защо хората идват с "простота" на въпроса си.

Аз съм в първоначалния вариант на въпроса питате как да получите възможно най-размера на изображението, в които някои единици или в пиксели на някои абсолютна единица. Аз може би нещо не е наред формулиран, но, уви, все още половината не разбират това.

Променена кода така
Оказа се, че възложената Image.Picture.Graphic TJPEGImage клас обект има свойства DPI, които могат да бъдат свързани с функции на Delphi-7, които да използвам.

Може би можете да получите някои други опции и въз основа на това изчислява?

В снимки, които са изготвени от размера на екрана не е вътре. Тя може да се опита да ги брои, ако знаете размера в пиксели, и настройките на дисплея.

В изображението се съхранява в параметър файл може да бъде. Но в някои случаи тя е безсмислена. Защо? Ами, например otskanirovanaya картина, а след това можете да разберете, тогава има смисъл DPI. Но в снимки на гледката от прозореца, той вече не правят смисъл, защото не може да побере една линия (малко мисъл, вие ще разберете защо). Но в случая на Земята снимки от космоса може да се наложи да има смисъл.

hResol: = (Image.Picture.Graphic като TJPEGImage) .dpi;

Внимателно прочетете предишния ми пост, което обяснява защо тя няма да работи.

Tick ​​"прочете потвърждение" - универсален зло.

Ако разбирам мисълта Вадим К. след възлагане на JPEG изображения Image.Picture.Graphic ако настъпи трансформация, първоначалните параметри са загубили тогава (не се съхранява в недрата на инстанция на типа TImage компонент).

Въпреки това, преди това "напреднали" въпроси, аз просто не го направи. Тук е модифициран код, който от тази гледна точка е правилна.
Той се натъква точно на същото място, където стария код
И в двата случая, на етапа на компилация Току-що съобщи, че DPI имотът не е дефинирано.

За разделителна способност на имоти - Аз нямам под ръка в момента Delphi. Може и да греша - всичко, което не мога да си спомня. Но това е трудно да натиснете точката, след като JPEG и да видите списък с имоти?


Не пишете, че. Тази памет течове. използване присвоите

Tick ​​"прочете потвърждение" - универсален зло.

Подкрепете проекта - споделете линка, благодаря!