create a new page, using OOobbs3/7 as a template.
Front page
Search
掲示板
Reload
Help
Browse Log
掲示板の使い方
OOo 掲示板3
OOo 掲示板2
OOo 掲示板
掲示板
雑談掲示板
New
List of pages
Recent changes
Backup
簡単ヘルプ
整形ルール
Start:
** [[OOobbs3/7]] [#ge34bc34]
-''サマリ'': Base 内のイメージデータを画像として取得したい
-''環境'': Basic
-''状態'': 解決
-''投稿者'': [[ike@九州]]
-''投稿日'': 2010-06-12 (Sat) 11:50:28
*** 質問 [#w3af0f02]
こんにちはお世話になります。
Base ではイメージをフォームを通して保存や表示をする事が出...
又、画像を Base に保存できるイメージデータとして取得する...
ギャラリでは出来ない色々なカテゴリ別での選別取得ができれ...
宜しくお願いいたします。
*** 回答 [#re2713ea]
- 色々やってなんだかうまくいかなかったのですが、python で...
- とりあえず作成してみました。
&ref(ImageDB_1.odb);
データベースに入れた画像をフォーム上のコピーボタンでクリ...
Python で書いたマクロをデータベースドキュメントに入れると...
Draw などに挿入するときはドキュメント辺りに XTransferable...
データベースのカラムを LONGVARBINARY などにすると保持され...
Sub PutImageIntoDatabase
oDoc = ThisComponent
oForm = oDoc.getDrawPage().getForms().getByIndex(0)
If IsNull(oForm.ActiveConnection) Then
oForm.execute()
If oForm.isBeforeFirst() Then oForm.first()
End If
nIDID = oForm.findColumn("ID")
nNameID = oForm.findColumn("NAME")
nImageID = oForm.findColumn("IMAGE")
sImageURL = "file:///home/user/Documents/images/w.png"
sfa = CreateUnoService("com.sun.star.ucb.SimpleFileAcce...
io = sfa.openFileRead(sImageURL)
nSize = sfa.getSize(sImageURL
' goto new row
oForm.moveToInsertRow()
' update row data
oForm.updateInt(nIDID, oForm.RowCount)
oForm.updateString(nNameID, "w")
oForm.updateBinaryStream(nImageID, io, nSize)
oForm.insertRow()
End Sub
画像をデータベースに入れるよりもパスを入れておいてそこを...
Python で書いた部分は以下。これをフォームのボタンに割り当...
' copy data to clipboard button pushed
Sub CopyButton_Pushed(ev)
sMacroPath = "ImageDB.py$copy_pushed"
CallPythonMacroWithEvent(ThisDatabaseDocument, sMacroPa...
End Sub
Sub CallPythonMacroWithEvent(oDoc As Object, sPart As St...
sURI = "vnd.sun.star.script:" & sPart & "?language=Pyth...
oSP = oDoc.getScriptProvider()
oScript = oSP.getScript(sURI)
If NOT IsNull(oScript) Then
oScript.invoke(Array(ev), Array(), Array())
End If
End Sub
#code(python){{
#!
# -*- coding: utf-8 -*-
import uno
import unohelper
from com.sun.star.datatransfer import XTransferable, Data...
from com.sun.star.beans import PropertyValue
"""Images into the database as binary data."""
# database columns
ID_Name = 'ID' # INTEGER
NAME_Name = 'NAME' # VARCHAR
IMAGE_Name = 'IMAGE' # LONGVARBINARY
def copy_pushed(ev):
"""copy the image, when copy button is pushed."""
form = ev.Source.getModel().getParent()
if not form:
print('no form.')
return
# get image data from rowset of the form
imageID = form.findColumn(IMAGE_Name)
stream = form.getBinaryStream(imageID)
ctx = XSCRIPTCONTEXT.getComponentContext()
smgr = ctx.getServiceManager()
# convert graphic to bitmap
args = []
args.append(make_PropertyValue('InputStream', stream))
gp = smgr.createInstanceWithContext(
'com.sun.star.graphic.GraphicProvider', ctx)
g = gp.queryGraphic(tuple(args))
if not g:
print('null graphic.')
return
data = g.getDIB()
if not data:
print('empty data')
return
try:
set_bmp_to_clipboard(ctx, data)
except Exception as e:
print(e)
class DataTransferable(unohelper.Base, XTransferable, obj...
"""Keep clipboard data and provide them."""
MimeType = ''
HumanPresentableName = ''
def __init__(self, data):
df = DataFlavor()
df.MimeType = self.MimeType
df.HumanPresentableName = self.HumanPresentableName
self.flavors = [df]
self.data = [data]
def getTransferData(self, flavor):
if not flavor: return
mtype = flavor.MimeType
for i, f in enumerate(self.flavors):
if mtype == f.MimeType:
return self.data[i]
def getTransferDataFlavors(self):
return tuple(self.flavors)
def isDataFlavorSupported(self, flavor):
if not flavor: return False
mtype = flavor.MimeType
for f in self.flavors:
if mtype == f.MimeType:
return True
return False
class BmpDataTransferable(DataTransferable):
"""transferable for bitmap data."""
MimeType = 'image/bmp'
HumanPresentableName = 'Bitmap'
def __init__(self, data):
DataTransferable.__init__(self, data)
def set_bmp_to_clipboard(ctx, data):
t = BmpDataTransferable(data)
cl = ctx.getServiceManager().createInstanceWithContext(
'com.sun.star.datatransfer.clipboard.SystemClipboard', ...
if not cl: return
cl.setContents(t, None)
def make_PropertyValue(name, value):
p = PropertyValue()
p.Name = name
p.Value = value
return p
g_exportedScripts = copy_pushed,
}}
-- はにゃ? &new{2010-06-12 (土) 20:20:54};
- 忘れていましたが、ベクトルタイプの画像はどうしますかね...
- フォームコントロールの画像コントロールで右クリックして...
BMP ファイルを入力したときに PNG になったので変だと思って...
ついでに、PNG 画像から Writer にコピーペーストした画像を...
とはいえこの SVXB はいつから使えるようになったんでしょう…...
-- はにゃ? &new{2010-06-13 (日) 01:57:51};
- 上記のフォームを使わずに画像をデータベースに入れるマク...
- 色々な試行有難うございました。全て確認できましたしマク...
- もう少しいじったものを作成しました。&ref(ImageDB_2.odb);
テーブルに画像の種類を保持するようにしました。また、画像...
-- はにゃ? &new{2010-06-13 (日) 20:39:56};
- 試してみました。 Draw に貼り付けてみるとステータスバー...
#comment
*** 感想,コメント,メモ [#c83f3fff]
#comment
End:
** [[OOobbs3/7]] [#ge34bc34]
-''サマリ'': Base 内のイメージデータを画像として取得したい
-''環境'': Basic
-''状態'': 解決
-''投稿者'': [[ike@九州]]
-''投稿日'': 2010-06-12 (Sat) 11:50:28
*** 質問 [#w3af0f02]
こんにちはお世話になります。
Base ではイメージをフォームを通して保存や表示をする事が出...
又、画像を Base に保存できるイメージデータとして取得する...
ギャラリでは出来ない色々なカテゴリ別での選別取得ができれ...
宜しくお願いいたします。
*** 回答 [#re2713ea]
- 色々やってなんだかうまくいかなかったのですが、python で...
- とりあえず作成してみました。
&ref(ImageDB_1.odb);
データベースに入れた画像をフォーム上のコピーボタンでクリ...
Python で書いたマクロをデータベースドキュメントに入れると...
Draw などに挿入するときはドキュメント辺りに XTransferable...
データベースのカラムを LONGVARBINARY などにすると保持され...
Sub PutImageIntoDatabase
oDoc = ThisComponent
oForm = oDoc.getDrawPage().getForms().getByIndex(0)
If IsNull(oForm.ActiveConnection) Then
oForm.execute()
If oForm.isBeforeFirst() Then oForm.first()
End If
nIDID = oForm.findColumn("ID")
nNameID = oForm.findColumn("NAME")
nImageID = oForm.findColumn("IMAGE")
sImageURL = "file:///home/user/Documents/images/w.png"
sfa = CreateUnoService("com.sun.star.ucb.SimpleFileAcce...
io = sfa.openFileRead(sImageURL)
nSize = sfa.getSize(sImageURL
' goto new row
oForm.moveToInsertRow()
' update row data
oForm.updateInt(nIDID, oForm.RowCount)
oForm.updateString(nNameID, "w")
oForm.updateBinaryStream(nImageID, io, nSize)
oForm.insertRow()
End Sub
画像をデータベースに入れるよりもパスを入れておいてそこを...
Python で書いた部分は以下。これをフォームのボタンに割り当...
' copy data to clipboard button pushed
Sub CopyButton_Pushed(ev)
sMacroPath = "ImageDB.py$copy_pushed"
CallPythonMacroWithEvent(ThisDatabaseDocument, sMacroPa...
End Sub
Sub CallPythonMacroWithEvent(oDoc As Object, sPart As St...
sURI = "vnd.sun.star.script:" & sPart & "?language=Pyth...
oSP = oDoc.getScriptProvider()
oScript = oSP.getScript(sURI)
If NOT IsNull(oScript) Then
oScript.invoke(Array(ev), Array(), Array())
End If
End Sub
#code(python){{
#!
# -*- coding: utf-8 -*-
import uno
import unohelper
from com.sun.star.datatransfer import XTransferable, Data...
from com.sun.star.beans import PropertyValue
"""Images into the database as binary data."""
# database columns
ID_Name = 'ID' # INTEGER
NAME_Name = 'NAME' # VARCHAR
IMAGE_Name = 'IMAGE' # LONGVARBINARY
def copy_pushed(ev):
"""copy the image, when copy button is pushed."""
form = ev.Source.getModel().getParent()
if not form:
print('no form.')
return
# get image data from rowset of the form
imageID = form.findColumn(IMAGE_Name)
stream = form.getBinaryStream(imageID)
ctx = XSCRIPTCONTEXT.getComponentContext()
smgr = ctx.getServiceManager()
# convert graphic to bitmap
args = []
args.append(make_PropertyValue('InputStream', stream))
gp = smgr.createInstanceWithContext(
'com.sun.star.graphic.GraphicProvider', ctx)
g = gp.queryGraphic(tuple(args))
if not g:
print('null graphic.')
return
data = g.getDIB()
if not data:
print('empty data')
return
try:
set_bmp_to_clipboard(ctx, data)
except Exception as e:
print(e)
class DataTransferable(unohelper.Base, XTransferable, obj...
"""Keep clipboard data and provide them."""
MimeType = ''
HumanPresentableName = ''
def __init__(self, data):
df = DataFlavor()
df.MimeType = self.MimeType
df.HumanPresentableName = self.HumanPresentableName
self.flavors = [df]
self.data = [data]
def getTransferData(self, flavor):
if not flavor: return
mtype = flavor.MimeType
for i, f in enumerate(self.flavors):
if mtype == f.MimeType:
return self.data[i]
def getTransferDataFlavors(self):
return tuple(self.flavors)
def isDataFlavorSupported(self, flavor):
if not flavor: return False
mtype = flavor.MimeType
for f in self.flavors:
if mtype == f.MimeType:
return True
return False
class BmpDataTransferable(DataTransferable):
"""transferable for bitmap data."""
MimeType = 'image/bmp'
HumanPresentableName = 'Bitmap'
def __init__(self, data):
DataTransferable.__init__(self, data)
def set_bmp_to_clipboard(ctx, data):
t = BmpDataTransferable(data)
cl = ctx.getServiceManager().createInstanceWithContext(
'com.sun.star.datatransfer.clipboard.SystemClipboard', ...
if not cl: return
cl.setContents(t, None)
def make_PropertyValue(name, value):
p = PropertyValue()
p.Name = name
p.Value = value
return p
g_exportedScripts = copy_pushed,
}}
-- はにゃ? &new{2010-06-12 (土) 20:20:54};
- 忘れていましたが、ベクトルタイプの画像はどうしますかね...
- フォームコントロールの画像コントロールで右クリックして...
BMP ファイルを入力したときに PNG になったので変だと思って...
ついでに、PNG 画像から Writer にコピーペーストした画像を...
とはいえこの SVXB はいつから使えるようになったんでしょう…...
-- はにゃ? &new{2010-06-13 (日) 01:57:51};
- 上記のフォームを使わずに画像をデータベースに入れるマク...
- 色々な試行有難うございました。全て確認できましたしマク...
- もう少しいじったものを作成しました。&ref(ImageDB_2.odb);
テーブルに画像の種類を保持するようにしました。また、画像...
-- はにゃ? &new{2010-06-13 (日) 20:39:56};
- 試してみました。 Draw に貼り付けてみるとステータスバー...
#comment
*** 感想,コメント,メモ [#c83f3fff]
#comment
Page: