Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Редакция *.jpg файла

15K
23 августа 2007 года
Arsen
21 / / 27.10.2006
Всем добрый день! :)
Пршу помочь с возникшей проблимкой:
как програмно (VB6) добавить текст на JPEG картинку? :confused:
Заранее благодарю.
251
23 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Arsen
Всем добрый день! :)
Пршу помочь с возникшей проблимкой:
как програмно (VB6) добавить текст на JPEG картинку? :confused:
Заранее благодарю.


Код:
Option Explicit
'API's used in this sample
Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal U As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
'Constant text to draw
Const TEXTOUTPUT As String = "www.codenet.ru"
Const PI As Single = 3.141593
'API constants
Const ANSI_CHARSET As Long = 0
Const FF_DONTCARE As Long = 0
Const CLIP_LH_ANGLES As Long = &H10
Const CLIP_DEFAULT_PRECIS As Long = 0
Const OUT_TT_ONLY_PRECIS As Long = 7
Const PROOF_QUALITY As Long = 2
Const TRUETYPE_FONTTYPE As Long = &H4
Const p_WIDTH As Long = 12
Const p_HEIGHT As Long = 12
 
'Center coordinates
Dim pXCenter As Long
Dim pYCenter As Long
'LookUp table with relative coordinates
Dim LookUp(1 To 2, 1 To 36) As Long
Dim pRadius As Long
'ending flag
Dim TimeToEnd As Boolean
'Main animation procedure
Private Sub RunMain()
Const FrameInterval As Long = 35
Dim LastFrameTime As Long
Dim Angle As Long
'Show the form
Me.Show
Angle = 1800
Do
    'check to see if we have to end
    If TimeToEnd Then Exit Do
 
 
        If GetTickCount() - LastFrameTime > FrameInterval Then  'Time to update
 
            'update angle
            Angle = (Angle Mod 3600) - 100
            'clear the form
            Me.Cls
 
            DrawRotatedText Angle
 
            LastFrameTime = GetTickCount()
 
        End If
 
    DoEvents
Loop
 
End Sub
'Draws the rotated text
Private Sub DrawRotatedText(Angle As Long)
Dim NewFont As Long
Dim OldFont As Long
Static I As Long
'creat the font
NewFont = CreateFont(p_HEIGHT, p_WIDTH, Angle, 0, FF_DONTCARE, 0, 0, 0, ANSI_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_LH_ANGLES Or CLIP_DEFAULT_PRECIS, PROOF_QUALITY, TRUETYPE_FONTTYPE, "Arial")
'set the new font
OldFont = SelectObject(Me.hdc, NewFont)
I = (I Mod 36) + 1
CurrentX = pXCenter + LookUp(1, I)
CurrentY = pYCenter + LookUp(2, I)
Print TEXTOUTPUT
'set the old font back
NewFont = SelectObject(Me.hdc, OldFont)
'Clean up
DeleteObject NewFont
End Sub
Private Sub Form_Load()
pRadius = ((Len(TEXTOUTPUT) * p_WIDTH) / 2)
BuildLookupTable
RunMain
End Sub
Private Sub Form_Resize()
'calculate center
pXCenter = Me.ScaleWidth / 2
pYCenter = Me.ScaleHeight / 2
End Sub
Private Sub Form_Unload(Cancel As Integer)
'flag the end
TimeToEnd = True
End Sub
'Builds the lookup table with the circle coordinates
Private Sub BuildLookupTable()
Dim I As Long
Dim Angle As Long
Const XIndex As Long = 1
Const YIndex As Long = 2
For I = LBound(LookUp, 2) To UBound(LookUp, 2)
    LookUp(XIndex, I) = CLng(Cos((Angle * PI / 180)) * pRadius)
    LookUp(YIndex, I) = CLng(Sin((Angle * PI / 180)) * pRadius)
    Angle = (Angle Mod 360) + 10
Next I
End Sub

Стандартный ЕХЕ, форма autoredraw=true, можете влепить как подложку на форму picture=ваш_рисунок для наглядного примера. На самом деле есть множество примеров, демонстрирующих сабж, это один из них.
15K
24 августа 2007 года
Arsen
21 / / 27.10.2006
Наверное я не правильно изложил суть дела, извените.
Мне надо на файле *.jpg добавить текст и сохранить его на прежнем месте но уже с текстом.
5.9K
24 августа 2007 года
SPB-667
119 / / 23.06.2007
Цитата: Arsen
Наверное я не правильно изложил суть дела, извените.
Мне надо на файле *.jpg добавить текст и сохранить его на прежнем месте но уже с текстом.



Так картинка на форме или фиг знает где, сама по себе как файл?

459
24 августа 2007 года
gacol
273 / / 12.02.2003
Это можно делать довольно просто в CorelDraw. Там VBA довольно удобный для таких дел.

Вот пример чтение - вставка текста - запись.

Sub Macro1()
' чтение файла 1.jpg
Dim impflt As ImportFilter
Dim impopt As StructImportOptions
Set impopt = New StructImportOptions
impopt.Mode = cdrImportFull
Set impflt = ActiveLayer.ImportEx("C:\1.jpg", cdrJPEG, impopt)
impflt.Finish

' вставить текст
Dim s As Shape
Set s = ActiveLayer.CreateParagraphText(0, 3, 4, 4, _
"ПРОВЕРЕНО", , , "Times New Roman", 24, cdrTrue, _
cdrTrue, , cdrCenterAlignment)

' запись файла 2.jpg
Dim expflt As ExportFilter
Set expflt = ActiveDocument.ExportBitmap("C:\2.jpg", _
cdrJPEG, cdrAllPages, cdrRGBColorImage, 2550, 3510, 300, 300, _
cdrNoAntiAliasing, False, False, True, False, cdrCompressionNone)
expflt.Finish
End Sub
251
24 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Могу дать DLL-ку которая поможет тебе это сделать. Там мини-Paint можно будет сделать
15K
27 августа 2007 года
Arsen
21 / / 27.10.2006
вот мой мейл [email]fanyanarsen@yahoo.com[/email]
Заранее благодарю.
648
27 августа 2007 года
Tiraspolsky
220 / / 23.07.2003
Ну зачем для такой задачки привлекать CorelDraw ?
По моему все решается просто:

pictureBox.CurrentX=100
pictureBox.CurrentY=100' Указываешь нужные координаты
pictureBox.Print "Мой текст"
SaveToJpg1 pictureBox.hDC, filename, pictureBox.Height, pictureBox.Width

где SaveToJpg1 - функция из библиотеки savtojpg.dll, на которую надо сослаться в соответствующем модуле
Private Declare Sub SaveToJpg1 Lib "savtojpg.dll" (ByVal hgd As Long, ByVal filename As String, ByVal Height As Long, ByVal Width As Long)
15K
27 августа 2007 года
Arsen
21 / / 27.10.2006
SaveToJpg1 pictureBox.hDC, filename, pictureBox.Height, pictureBox.Width

Вот тут вылетает с ошибкой
648
28 августа 2007 года
Tiraspolsky
220 / / 23.07.2003
С какой ошибкой то ?
251
28 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
На почту не дам - ведь это не личная переписка, а форум. То есть может и другим буит интересно. Ладно, см. вложения.
15K
03 сентября 2007 года
Arsen
21 / / 27.10.2006
я побробовал написать маленькую тестовую програмку и у меня чето вылетает при сохранении.
во вложенном архиве проект полностью и скриншот
648
04 сентября 2007 года
Tiraspolsky
220 / / 23.07.2003
Значит так. Посмотрел я твой test.
1. Законное место для DLL - system32.
2. Для picturebox должно быть autoredraw=TRUE, scalemode=3
и все работает.
Но коряво. Обязательно надо обрабатывать нажатие Cancel и присвоить нужные свойства CommonDialog.
А точнее, надо анализировать возвращаемое значение Filename, потому что можно нажать не только Cancel, но и крестик, закрывающий CommonDialog.
251
04 сентября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Tiraspolsky
Значит так. Посмотрел я твой test.
1. Законное место для DLL - system32.


Опять стандарты?:) ИМХО, не обязательно. Лучшее место - в папке с программой. и не надо при копировании с одного места на второе искать эту ДЛЛ-ку, а также не засоряешь свой SYSTEM32

15K
04 сентября 2007 года
Arsen
21 / / 27.10.2006
а что делает
SaveToJpg2 ?
у меня после выполнения этой функции от фотки остается только белый фон.
а при использовании SaveToJpg1 при минимизированном окне сохраняется черт те знает что. Как быть в этом случае???
Заранее благодарю!
251
04 сентября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Arsen
а что делает
SaveToJpg2 ?
у меня после выполнения этой функции от фотки остается только белый фон.
а при использовании SaveToJpg1 при минимизированном окне сохраняется черт те знает что. Как быть в этом случае???
Заранее благодарю!


У меня все работает:cool:

15K
04 сентября 2007 года
Arsen
21 / / 27.10.2006
Цитата: SkyM@n
У меня все работает:cool:



как это понять?
работает функция SaveToJpg2?
или с минимизированным окном (содержащим Picture1) все нормально сохраняется, точнее то что и предпологалось?
если да то убедительно прошу примерчик :confused:
заранее благодарю!

P.S. мне надо чтоб, из моей программы делалась надпись на фотографии, но чтоб эта фотография нигде не светилась...

251
04 сентября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Arsen
а что делает
SaveToJpg2 ?
у меня после выполнения этой функции от фотки остается только белый фон.
а при использовании SaveToJpg1 при минимизированном окне сохраняется черт те знает что. Как быть в этом случае???
Заранее благодарю!


SaveToJpg2 не пашет - подтверждаю, а в каментах рассказано о SaveToJpg1. Я эту ДЛЛ не писал, потому и не расскажу о ней ничего интересного.:p

648
06 сентября 2007 года
Tiraspolsky
220 / / 23.07.2003
Описание функций читай в прицепленном файле.
По поводу минимизированного окна: проверь еще раз autoredraw=TRUE.

Где хранить DLL - на любителя. Либо ты засоряешь system32 (но в этом случае - годится для всех приложений), либо засоряешь папку с приложением и тогда делаешь это для каждого приложения, где используется DLL.
15K
14 сентября 2007 года
Arsen
21 / / 27.10.2006
Tiraspolsky
ОГРОМНОЕ ТЕБЕ СПОСИБО!!!
7
15 сентября 2007 года
@pixo $oft
3.4K / / 20.09.2006
Ё-моё!!!Столько написали,а результат?Arsen,ты что,собираешься DLL'ку с каждым проектом таскать?Во-первых,в Windows может быть какой-нибудь ActiveX DLL/OCX,позволяющий делать это за милую душу.А во-вторых,Tiraspolsky почти вплотную пришёл к решению проблемы,только вместо своих DLL'ек можно было использовать SavePicture!!!
SkyM@n:ай-яй-яй!DLL не писал,а другим людям суёшь?А откуда им знать,что там?Может,просто эмуляция,а внутри живёт страшное-престрашное страшилище!?
251
15 сентября 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: @pixo $oft

SkyM@n:ай-яй-яй!DLL не писал,а другим людям суёшь?А откуда им знать,что там?Может,просто эмуляция,а внутри живёт страшное-престрашное страшилище!?


Я НЕ занимаюсь писательством под бейсик. Тем более на халяву. Для халявы есть отдельный раздел. Во-вторых, чем мог (и хотел), тем помог. В-третьих, как ты сказал ИМ выбирать, юзать это или нет.
А главное:

Цитата:

Столько написали,а результат?

648
17 сентября 2007 года
Tiraspolsky
220 / / 23.07.2003
Цитата: @pixo $oft
только вместо своих DLL'ек можно было использовать SavePicture!!!



Уважаемый @pixo $oft.
SavePicture не умеет сохранять графику в формате JPG !!!

Цитата: @pixo $oft
в Windows может быть какой-нибудь ActiveX DLL/OCX,позволяющий делать это за милую душу



Чего языком то молоть. Если тебе известен ActiveX DLL/OCX, напиши, дай ссылку. Потому и юзают savtojpg, что аналогичный ActiveX DLL/OCX публике неизвестен.

15K
18 сентября 2007 года
Arsen
21 / / 27.10.2006
Цитата: @pixo $oft
Столько написали,а результат?



А какой результат ты ожидал?
У меня была проблема и мне помогли и я благодарен а что тебе еще надо? :confused:

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог