社区
VB基础类
帖子详情
將圖像的像素由原來的1000*600縮小到500*300
Hideal
2004-08-27 02:33:13
將jpg圖像的像素由原來的1000*600縮小到500*300,然後另存一個文件.如果可以設置它的質量那就最好了.
本站我搜索了一下也沒有找到這樣的程序例子.用panitpicture方法只會將圖的一部份存起來,達不到目的.
難道這樣問題也算難嗎?
...全文
268
11
打赏
收藏
將圖像的像素由原來的1000*600縮小到500*300
將jpg圖像的像素由原來的1000*600縮小到500*300,然後另存一個文件.如果可以設置它的質量那就最好了. 本站我搜索了一下也沒有找到這樣的程序例子.用panitpicture方法只會將圖的一部份存起來,達不到目的. 難道這樣問題也算難嗎?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zyl910
2004-08-28
打赏
举报
回复
Option Explicit
Private Const CtlSpace = 4 '控件之间的距离
Private Sub CmdMake_Click()
Dim nWidth As Long
Dim nHeight As Long
'得到数值
On Error GoTo ErrNum
nWidth = CLng(TxtWidth.Text)
nHeight = CLng(TxtHeight.Text)
On Error GoTo 0
If nWidth < 1 Or nHeight < 1 Then GoTo ErrNum
'改变大小
On Error GoTo ErrSetSize
PicDest.Move 0, 0, nWidth, nHeight
On Error GoTo 0
'取消PictureBox的缓存
Set PicDest.Picture = Nothing
'绘制图像
PicDest.PaintPicture ImgSrc, 0, 0, PicDest.ScaleWidth, PicDest.ScaleHeight
Exit Sub
ErrNum:
MsgBox "错误的数值!", vbCritical
Exit Sub
ErrSetSize:
MsgBox "无法创建这么大的图片!", vbCritical
Exit Sub
End Sub
Private Sub CmdReset_Click()
If ImgSrc.Picture.Type = vbPicTypeNone Then '无图片
TxtWidth.Text = CStr(1)
TxtHeight.Text = CStr(1)
CmdMake.Enabled = False
Else
TxtWidth.Text = CStr(ImgSrc.Width)
TxtHeight.Text = CStr(ImgSrc.Height)
CmdMake.Enabled = True
Call CmdMake_Click
End If
End Sub
Private Sub Form_Load()
'-- 初始化坐标定位
Dim SM_Me As Long
Dim SM_Tbr As Long
Dim nTemp As Long
SM_Me = Me.ScaleMode
SM_Tbr = PicToolBar.ScaleMode
'定位PicToolBar的高度
With PicToolBar
'计算边框大小
nTemp = Me.ScaleY(.Height, SM_Me, vbPixels) - .ScaleY(.ScaleHeight, SM_Tbr, vbPixels)
'计算PicToolBar应有高度
nTemp = nTemp + .ScaleY(TxtWidth.Height, SM_Tbr, vbPixels)
'设置高度
.Height = Me.ScaleY(nTemp, vbPixels, SM_Me)
End With
'定位PicToolBar内的控件
nTemp = PicToolBar.ScaleHeight
LblWidth.Move CtlSpace, (nTemp - LblWidth.Height) / 2
TxtWidth.Move LblWidth.Left + LblWidth.Width, 0
LblHeight.Move TxtWidth.Left + TxtWidth.Width + CtlSpace, (nTemp - LblWidth.Height) / 2
TxtHeight.Move LblHeight.Left + LblHeight.Width, 0, TxtHeight.Width, TxtWidth.Height
CmdMake.Move TxtHeight.Left + TxtHeight.Width + CtlSpace, 0, CmdMake.Width, TxtWidth.Height
CmdReset.Move CmdMake.Left + CmdMake.Width + CtlSpace, 0, CmdReset.Width, TxtWidth.Height
ImgSrc.Move 0, 0
PicDest.Move 0, 0
'--设置数值
Call CmdReset_Click
With CDlgFile
.CancelError = True
.Flags = cdlOFNOverwritePrompt Or cdlOFNHideReadOnly
.Filter = "Windows位图(*.bmp)|*.bmp|所有文件(*.*)|*.*"
End With
End Sub
Private Sub Form_Resize()
If Me.WindowState = 1 Then Exit Sub
On Error Resume Next
Dim nTemp As Long
nTemp = PicToolBar.Height
PicClipS.Move 0, nTemp, Me.ScaleWidth / 2, Me.ScaleHeight - nTemp
PicClipD.Move PicClipS.Width, nTemp, Me.ScaleWidth - PicClipS.Width, PicClipS.Height
End Sub
Private Sub mnuExit_Click()
Unload Me
End Sub
Private Sub mnuOpen_Click()
On Error Resume Next
CDlgFile.ShowOpen
If Err.Number Then Exit Sub '点了取消
'打开
Set ImgSrc.Picture = LoadPicture(CDlgFile.FileName)
If Err.Number Then
MsgBox "无法打开文件!", vbCritical
Exit Sub
End If
On Error GoTo 0
Call CmdReset_Click
End Sub
Private Sub mnuSave_Click()
On Error Resume Next
CDlgFile.ShowSave
If Err.Number Then Exit Sub '点了取消
'保存
SavePicture PicDest.Image, CDlgFile.FileName
If Err.Number Then
MsgBox "无法保存图片!", vbCritical
Exit Sub
End If
On Error GoTo 0
End Sub
zyl910
2004-08-28
打赏
举报
回复
注意:
PicClipD的ScaleMode=vbPixels
源图像是ImgSrc
目的图像是PicDest,注意它的属性
最关键的实现过程在CmdMake_Click
将下列内容复制到记事本,并保存为相应的文件
PicScale.vbp
--------------------
Type=Exe
Form=FrmMain.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\SYSTEM\STDOLE2.TLB#OLE Automation
Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; COMDLG32.OCX
Startup="FrmMain"
ExeName32="PicScale.exe"
Command32=""
Name="PicScale"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
FrmMain.frm
----------------------------------
VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Begin VB.Form FrmMain
Caption = "简单图像文件缩放"
ClientHeight = 3195
ClientLeft = 165
ClientTop = 735
ClientWidth = 4680
HasDC = 0 'False
LinkTopic = "Form1"
ScaleHeight = 213
ScaleMode = 3 'Pixel
ScaleWidth = 312
StartUpPosition = 3 '窗口缺省
Begin MSComDlg.CommonDialog CDlgFile
Left = 2160
Top = 1320
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin VB.PictureBox PicClipD
BackColor = &H8000000C&
HasDC = 0 'False
Height = 1695
Left = 2520
ScaleHeight = 109
ScaleMode = 3 'Pixel
ScaleWidth = 117
TabIndex = 8
TabStop = 0 'False
Top = 840
Width = 1815
Begin VB.PictureBox PicDest
AutoRedraw = -1 'True
BackColor = &H00FFFFFF&
BorderStyle = 0 'None
Height = 495
Left = 240
ScaleHeight = 33
ScaleMode = 3 'Pixel
ScaleWidth = 65
TabIndex = 9
TabStop = 0 'False
Top = 360
Width = 975
End
End
Begin VB.PictureBox PicClipS
BackColor = &H8000000C&
HasDC = 0 'False
Height = 1575
Left = 360
ScaleHeight = 101
ScaleMode = 3 'Pixel
ScaleWidth = 101
TabIndex = 7
TabStop = 0 'False
Top = 840
Width = 1575
Begin VB.Image ImgSrc
Height = 855
Left = 240
Top = 240
Width = 855
End
End
Begin VB.PictureBox PicToolBar
Align = 1 'Align Top
HasDC = 0 'False
Height = 495
Left = 0
ScaleHeight = 29
ScaleMode = 3 'Pixel
ScaleWidth = 308
TabIndex = 0
TabStop = 0 'False
Top = 0
Width = 4680
Begin VB.CommandButton CmdReset
Caption = "复位"
Height = 255
Left = 3960
TabIndex = 6
Top = 120
Width = 780
End
Begin VB.CommandButton CmdMake
Caption = "生成"
Height = 255
Left = 3120
TabIndex = 5
Top = 120
Width = 780
End
Begin VB.TextBox TxtHeight
Height = 270
Left = 2280
TabIndex = 4
Text = "Text1"
Top = 120
Width = 750
End
Begin VB.TextBox TxtWidth
Height = 270
Left = 720
TabIndex = 2
Text = "Text1"
Top = 120
Width = 750
End
Begin VB.Label LblHeight
AutoSize = -1 'True
Caption = "Height:"
Height = 180
Left = 1680
TabIndex = 3
Top = 120
Width = 630
End
Begin VB.Label LblWidth
AutoSize = -1 'True
Caption = "&Width:"
Height = 180
Left = 120
TabIndex = 1
Top = 120
Width = 540
End
End
Begin VB.Menu mnuFile
Caption = "文件(&F)"
Begin VB.Menu mnuOpen
Caption = "打开(&O)..."
End
Begin VB.Menu mnuSave
Caption = "保存(&S)..."
End
Begin VB.Menu mnuSep0_0
Caption = "-"
End
Begin VB.Menu mnuExit
Caption = "退出(&X)"
End
End
End
Attribute VB_Name = "FrmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
zyl910
2004-08-28
打赏
举报
回复
我并不是想人身攻击
我只是想让楼主见识一下现在技术的发展层次
别被教科书迷惑了
我原来也对这这些超过自身层次的东西很反感
但现在仔细看了一下数学与物理学的发展后
我感觉自己以及某些人真的很肤浅:
比如某些人说现在数学与物理学没有发展
这实际上是现在数学与物理学发展的太快,已经超过普通人认识的层次
这就像我们还在地球上,太阳的光芒(学校教育)把一切遮盖住了,不知道现在的研究已经到了河外星系
大学数学算什么
微积分只是现在数学的基础
而且大学教的还是初等微积分
Hideal
2004-08-28
打赏
举报
回复
承認你是高手,本人無地自容.
xxfeiyu
2004-08-28
打赏
举报
回复
用StretchBlt缩放
api申明里有
Hideal
2004-08-28
打赏
举报
回复
請勿進行人身功擊!!!!!!!!!!!!!!!!!!!!!!!
做人的最起碼的道理.
雖然你的回答是我所想要的.但你的回答讓人非常的不快.
zyl910:現在處於經歷社會的第一層次學階段中,請先學會怎樣做人.(高手和菜鳥之間的差距是菜鳥起步的階段高手同樣走過,請不要回關笑你的過去)
不過還是很謝謝你.
zyl910
2004-08-28
打赏
举报
回复
图像缩放程序的层次:
1:用PaintPicture缩放
2:用StretchBlt缩放
3:知道图像缩放原理,用SetPixelV逐点逐点算,速度非常慢
4:使用DIB图像处理技术加快图像处理速度,比3快70~100倍
5:考虑特殊CPU指令集优化算法,如MMX、3DNow!、SSE、SEE2等
楼主现在处于第一层次学习阶段
Hideal
2004-08-28
打赏
举报
回复
唉。。原来是这么的easy!!!
晕啊。。。跳楼好了。。。。
zyl910
2004-08-28
打赏
举报
回复
難道這樣問題也算難嗎?
-------------------
是因为你现在的编程功力不够
某些东西不敢跟你说
比如:
利用插值算法实现图像的平滑缩放
讨论:http://search.csdn.net/Expert/topic/1183/1183347.xml?temp=.5059931
下载:http://www.aivisoft.net/Zyl910/zScale.zip
zyl910
2004-08-28
打赏
举报
回复
本站我搜索了一下也沒有找到這樣的程序例子.用panitpicture方法只會將圖的一部份存起來,達不到目的.
=================================
别在同一个PictureBox中panitpicture!
将图像panitpicture到另一个PictureBox去
而且两者的AutoRedraw必须设为True(AutoRedraw=False时是在屏幕上画的,会被剪裁)
至于保存JPEG:
http://community.csdn.net/Expert/topic/3209/3209104.xml?temp=.9472772
★ 完整的JPEG保存程序 与 高速在网络上传输图像程序
Hideal
2004-08-28
打赏
举报
回复
up
【GitHub】Intervention/image 全面解析:PHP 图像处理瑞士军刀
是 PHP 生态中最受欢迎的开源图像处理库,由德国开发者开发和维护。它为 PHP 提供了简洁、优雅的图像操作接口,支持 GD Library、Imagick 和 libvips 三种主流图像处理后端。安装量: 208,962,787 次 (超过 2 亿次安装)API 优雅:链式调用,代码可读性强驱动解耦:GD/Imagick/libvips 无缝切换功能丰富:缩放、裁剪、滤镜、绘图、水印全覆盖生态完善:Laravel 官方支持,文档详尽维护活跃:持续更新,问题响应及时。
TextStyleBrush:图像级文本风格迁移技术解析
文本风格迁移是一种将源图像中文字的视觉特征(如笔画粗细、倾斜角度、墨色浓淡、边缘毛糙度等)提取并复用于新文本渲染的技术,其核心原理在于绕过传统OCR+字体替换范式,转向基于
像素
级笔画建模与参数化笔刷再生的双重机制。该技术不依赖预训练大模型或字体文件,而是通过自适应采样、骨架细化、梯度分布分析与结构扰动建模,实现高保真、可解释、可调控的风格复现。在古籍修复、手写批注生成、教育反馈嵌入及品牌视觉延展等场景中展现出独特工程价值,尤其适用于对
像素
一致性、非印刷体兼容性与轻量部署有严苛要求的实际业务系统。
Halcon ROI技术:从基础概念到高效图像处理实践
本文深入探讨了Halcon ROI技术在图像处理中的高效应用,从基础概念到实战技巧全面解析。通过精准框选目标区域(ROI),可大幅提升计算效率3-5倍,同时提高检测精度。文章详细介绍了矩形、圆形、多边形等多种ROI创建方法,并分享了工业检测和医疗影像中的成功案例,为开发者提供了一套完整的ROI技术实践指南。
数码相机和单反相机区别
一、DSLR与消费旗舰的主要区别 首先在取景方式上二者有很大的不同, 消费旗舰使用了类似摄像机的LCD或电子取景器(EVF)。而数码单反的取景方式与之有很大不同,使用了与传统单反相机一样的“单镜头反光”取景技术,由复杂的反光镜和五棱镜组成了纯光学的取景系统。光学取景器一般分为旁轴平视式和单镜头反光同轴式两种取景方式,其中后者直接通过镜头取景,保证了取景时所看到的景物是完全将要通过镜头拍
别再只盯着图像了!拆解X光平板探测器:从晶体感光层到读出电路的硬件实战解析
本文深入解析X光平板探测器的硬件结构,从晶体感光层的材料选择到光电二极管阵列的设计,再到读出电路的信号处理,全面拆解探测器内部的核心组件。通过工程实践和性能测试数据,揭示如何优化探测器设计以提升成像质量,特别关注晶体感光层与读出电路的协同工作。
VB基础类
7,787
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章