當前位置:首頁 » 編程軟體 » 編程圖片裁剪

編程圖片裁剪

發布時間: 2022-08-04 14:15:39

『壹』 VB圖片裁剪

Option Explicit

Private Sub Command1_Click()
Picture2.PaintPicture Picture1.Picture, 0, 0, Picture1.Width / 5, , Picture1.Width / 5 * 4
picture1.visible=false
End Sub

『貳』 php如何實現圖片的裁剪

php中裁剪圖片主要使用gd庫的imageresampled方法

$src_path='1.jpg';
//創建源圖的實例
$src=imagecreatefromstring(file_get_contents($src_path));

//裁剪開區域左上角的點的坐標
$x=100;
$y=12;
//裁剪區域的寬和高
$width=200;
$height=200;
//最終保存成圖片的寬和高,和源要等比例,否則會變形
$final_width=100;
$final_height=round($final_width*$height/$width);
//將裁剪區域復制到新圖片上,並根據源和目標的寬高進行縮放或者拉升
$new_image=imagecreatetruecolor($final_width,$final_height);
imageresampled($new_image,$src,0,0,$x,$y,$final_width,$final_height,$width,$height);
//輸出圖片
header('Content-Type:image/jpeg');
imagejpeg($new_image);
imagedestroy($src);
imagedestroy($new_image);

『叄』 java編程怎麼才能分割圖片

public BufferedImage getSubimage(int x,
int y,
int w,
int h)返回由指定矩形區域定義的子圖像。返回的 BufferedImage 與源圖像共享相同的數據數組。

參數:
x - 指定矩形區域左上角的 X 坐標
y - 指定矩形區域左上角的 Y 坐標
w - 指定矩形區域的寬度
h - 指定矩形區域的高度

你先把分塊的坐標弄好,在拿這個方法去拿沒塊的圖就是了。

『肆』 我想要在opencv中用最小矩形外接圖中圖像並剪切截取出這個矩形部分。

試試 裡面一些參數要改一下 這是c++

vector<vector<Point>> vecContour;
vector<Vec4i> hierarcy;
findContours(dst1, vecContour, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);//查找輪廓
Rect boundRect;//存放外接矩形
RotatedRect rorect;//存放最小外接矩形
Point2f rect[4];
//vector<vector<Point>>proRect;
//Mat imageContours = Mat::zeros(image.size(), CV_8UC1);
for (int i = 0; i < vecContour.size(); i++)
{
boundRect = boundingRect(Mat(vecContour[i]));

if (boundRect.width < 200 || boundRect.height < 200)
continue;
circle(dst1, Point(rorect.center.x, rorect.center.y), 5, Scalar(0, 255, 0), -1, 8); //繪制最小外接矩形的中心點
rorect.points(rect); //把最小外接矩形四個端點復制給rect數組

rectangle(dst1, Point(boundRect.x, boundRect.y), Point(boundRect.x + boundRect.width, boundRect.y + boundRect.height), Scalar(0, 255, 0), 2, 8);
for (int j = 0; j < 4; j++)
{
line(dst1, rect[j], rect[(j + 1) % 4], Scalar(255, 0, 0), 2, 8); //繪制最小外接矩形每條邊
}

}

『伍』 CAD圖形中的圖片怎麼剪裁掉不用的部分

可以通過以下方法進行圖片的剪切:

1、打開電腦中的一個CAD文檔,插入一張圖片後,用滑鼠選中該圖片,然後找到圖片的夾點,如下:

『陸』 圖像裁剪

遙感圖像一景的范圍往往很大,佔用存儲空間多,對其進行操作時運算速度慢。為了減少工作量,加快計算機運算速度,我們往往根據需要裁剪出想要的圖像范圍即可。按照ERDAS 實現圖像分幅裁剪的過程,可以將圖像分幅裁剪分為兩種類型: 規則分幅和不規則分幅。

圖 3. 40 Resample 對話框

3. 3. 2. 1 規則分幅裁剪(Rectangle Subset IMAGE)

規則分幅是指裁剪圖像的邊界范圍是一個矩形,通過左上角和右下角兩點的坐標,就可以確定圖像的裁剪位置,整個裁剪過程比較簡單。

ERDAS 圖標面板菜單條: Main→Data Preparation→Data Preparation 菜單→選擇 SubsetIMAGE→開 Subset IMAGE 對話框(圖 3. 41);

ERDAS 圖標面板工具條: 點擊 Data Prep 圖標→打開 Data Preparation 菜單→選擇 Sub-set IMAGE→打開 Subset IMAGE 對話框(圖 3. 41)。

在 Subset IMAGE 對話框中需要設置下列參數:

→輸入文件名稱(Input File): xh20000528. IMG;

→輸出文件名稱(Output File): xh000528_subset. IMG;

→坐標類型(Coordinate Type): Map;

→裁剪范圍(Subset Definition): 輸入 ULX、ULY、LRX、LRY;

→輸出數據類型(Output Data Type): Unsigned 8 bit;

→輸出統計忽略零值: Ignore Zero in Output Stats;

→輸出像元波段(Select Layers): 1: 6(表示選擇從第1 波段到第7 波段),4,3,2(表示選擇 4,3,2 四個波段);

→OK(關閉 Subset IMAGE 對話框,執行圖像裁剪)。

圖 3. 41 Subset IMAGE 對話框

說明: ①在上述圖像裁剪過程中,裁剪范圍是通過直接輸入左上角坐標和右下角坐標定義的。此外,還可以通過兩種方式定義裁剪范圍: 其一是應用查詢框(Inquire Box),然後在 Subset IMAGE 對話框中選擇 From Inquire Box 功能; 其二是應用 AOI,然後在 Sub-set IMAGE 對話框中選擇 AOI 功能,打開 AOI 對話框,並確定 AOI 區域來自圖像視窗即可。②輸出波段的選擇: 一種是用冒號表示從第幾波段到第幾波段,另外一種是用逗號隔開表示僅僅選擇這幾個波段。

3. 3. 2. 2 不規則分幅裁剪(Polygon Subset IMAGE)

不規則分幅裁剪是指裁剪圖像的邊界范圍是個任意多邊形,無法通過左上角和右下角兩點的坐標確定圖像的裁剪位置,而必須事先生成一個完整閉合多邊形區域,可以是一個 AOI多邊形,也可以是 ArcInfo 的一個 Polygon Coverage。針對不同的情況採用不同裁剪過程。

(1)AOI 多邊形裁剪(Polygon AOI Subset IMAGE)

首先在視窗中打開需要裁剪的圖像,並應用 AOI 工具繪制多邊形 AOI,可以將多邊形AOI 保存在文件中(* . AOI),也可以暫時不退出視窗,將圖像與 AOI 多邊形保留在視窗中,然後,在 Subset IMAGE 對話框中需要設置下列參數:

→輸入文件名稱(Input File): Lanier. IMG;

→輸出文件名稱(Output File): Lanier_sub. IMG;

→應用 AOI 確定裁剪范圍: 點擊 AOI 按鈕;

→打開選擇 AOI(Choose AOI)對話框(圖 3. 42);

圖 3. 42 Choose AOI 對話框

→在 Choose AOI 對話框中確定 AOI 的來源(AOI Source): Viewer 或 AOI File(如果選擇 AOI File,則需要瀏覽找到此前的* . AOI 文件);

→輸出數據類型(Output Data Type): Unsigned 8 bit;

→輸出統計忽略零值: Ignore Zero in Output Stats;

→輸出像元波段(Select Layers): 1: 6(表示選擇從第1 波段到第7 波段),4,3,2(表示選擇 4,3,2 四個波段);

→OK(關閉 Subset IMAGE 對話框,執行圖像裁剪)。

(2)ArcInfo 多邊形裁剪(Polygon Coverage Subset IMAGE)

如果按照行政區劃邊界或自然區劃邊界進行圖像的分幅裁剪,往往是首先利用 ArcInfo或 ERDAS 的 Vector 模塊繪制精確的邊界多邊形(Polygon),然後以 ArcInfo 的 Polygon 為邊界條件進行圖像裁剪。若是對地形圖的內框范圍進行裁剪,需要藉助其他軟體如 Map-GIS 生成標准內框設定裁剪范圍。對於這種情況,需要調用 MapGIS 和 ERDAS 其他模塊的操作分兩步完成。

圖 3. 43 生成 1∶5 萬單線內框

第一步: 在 MapGIS 的投影變換子系統中根據四幅圖像的左下角經緯度分別生成 4 個標准 1∶5 萬單線內框(圖 3. 43)。

第二步: 選擇標准橢球,如圖 3. 44 所示。

圖 3. 44 選擇橢球體

第三步: 對生成的標准內框進行投影轉換,如圖 3. 45 所示。

圖 3. 45 對內框進行投影轉換

第四步: 選擇投影轉換的內框文件,如圖 3. 46 所示。

圖 3. 46 選擇投影文件或目錄

第五步: 設置輸入坐標系類型和投影類型、比例尺分母、及坐標單位、投影帶類型及投影帶號,如圖 3. 47 所示。

圖 3. 47 設置輸入坐標系類型和投影類型

第六步: 設置輸出坐標系類型和投影類型、比例尺分母及坐標單位、投影帶類型及投影帶序號,如圖 3. 48 所示。

第七步: 在 MapGIS 的輸入編輯中按照生成的內框新建一個工程,將四個單線分別進行拓撲,如圖 3. 49~ 圖 3. 51 所示。

圖 3. 48 設置輸出坐標系類型和投影類型

圖 3. 49 設置新建工程的地圖參數

圖 3. 50 在新建工程中載入內框文件

圖 3. 51 對內框進行拓撲

第八步: 文件轉換,在 MapGIS 的文件轉換中將拓撲好的文件(* . WP)轉成 Shp 文件格式,如圖 3. 52 所示。

第九步: 矢量柵格化,將 Shp 格式的單線內框進行矢量柵格化,柵格化得到的圖像,用 IMAGE Command Tool 命令重新賦一次投影信息。再進行 Mask 掩膜處理,得到用內框裁剪的圖像,如圖 3. 53,圖 3. 54 所示。

第十步: 查看矢量柵格化結果,如圖 3. 55 所示,圖中沒有投影信息。

第十一步: 載入投影信息,如圖 3. 56,圖 3. 57 所示,此時載入的投影信息需要和地形圖校正時需要的信息一致。

第十二步: 查看附有投影信息的文件,如圖 3. 58 所示。

第十三步: 進行掩膜操作,執行圖像裁剪,在 Mask 掩膜對話框中設置需要裁剪的圖像文件以及膜文件、輸出文件類型等,如圖 3. 59,圖 3. 60 所示。

通過上述過程可以得到內框范圍內的地形圖。

圖 3. 52 將* . WP 文件轉換為* . Shp 文件

圖 3. 53 矢量柵格化菜單

圖 3. 54 Vector to Raster 對話框

3. 3. 2. 3 使用 AOI 定義裁剪范圍,提取出區域范圍

第一步: 在視圖窗口分別打開 Shp 格式的內框,選擇單個區域保存為 AOI 文件,用AOI 定義區域范圍。然後用 Subset 進行裁剪,得到用內框裁剪的圖像,如圖 3. 61~ 圖3. 64 所示。

兩種方法比較:

1)用 Mask 掩膜方法進行裁剪,需要重新附加投影信息,裁剪結果佔用的磁碟空間較少,過程較復雜。

圖 3. 55 矢量柵格化結果

圖 3. 56 IMAGE Commands 對話框

2)使用 AOI 定義裁剪范圍時,可以減少附加投影信息的過程,但是裁剪結果佔用的磁碟空間並沒有減少,過程較簡單。

圖 3. 57 選擇投影類型

圖 3. 58 附有投影信息的文件

圖 3. 59 掩膜工具

圖 3. 60 Mask 對話框

『柒』 如何在Java中進行圖片剪裁 瘋狂JAVA

packagetest;

importjava.awt.Color;
importjava.awt.Graphics2D;
importjava.awt.Image;
importjava.awt.geom.AffineTransform;
importjava.awt.image.AffineTransformOp;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjava.nio.Buffer;

importjavax.imageio.ImageIO;
importjavax.imageio.stream.ImageOutputStream;

/**
*裁剪、縮放圖片工具類
*
*@authorCSDN沒有夢想-何必遠方
*/
publicclassImgUtils{
/**
*縮放圖片方法
*
*@paramsrcImageFile
*要縮放的圖片路徑
*@paramresult
*縮放後的圖片路徑
*@paramheight
*目標高度像素
*@paramwidth
*目標寬度像素
*@parambb
*是否補白
*/
publicfinalstaticvoidscale(StringsrcImageFile,Stringresult,
intheight,intwidth,booleanbb){
try{
doubleratio=0.0;//縮放比例
Filef=newFile(srcImageFile);
BufferedImagebi=ImageIO.read(f);
Imageitemp=bi.getScaledInstance(width,height,bi.SCALE_SMOOTH);//bi.SCALE_SMOOTH
//選擇圖像平滑度比縮放速度具有更高優先順序的圖像縮放演算法
//計算比例
if((bi.getHeight()>height)||(bi.getWidth()>width)){
doubleratioHeight=(newInteger(height)).doubleValue()
/bi.getHeight();
doubleratioWhidth=(newInteger(width)).doubleValue()
/bi.getWidth();
if(ratioHeight>ratioWhidth){
ratio=ratioHeight;
}else{
ratio=ratioWhidth;
}
AffineTransformOpop=newAffineTransformOp(AffineTransform//仿射轉換
.getScaleInstance(ratio,ratio),null);//返回表示剪切變換的變換
itemp=op.filter(bi,null);//轉換源BufferedImage並將結果存儲在目標
//BufferedImage中。
}
if(bb){//補白
BufferedImageimage=newBufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);//構造一個類型為預定義圖像類型之一的
//BufferedImage。
Graphics2Dg=image.createGraphics();//創建一個
//Graphics2D,可以將它繪制到此
//BufferedImage中。
g.setColor(Color.white);//控制顏色
g.fillRect(0,0,width,height);//使用Graphics2D上下文的設置,填充Shape
//的內部區域。
if(width==itemp.getWidth(null))
g.drawImage(itemp,0,(height-itemp.getHeight(null))/2,
itemp.getWidth(null),itemp.getHeight(null),
Color.white,null);
else
g.drawImage(itemp,(width-itemp.getWidth(null))/2,0,
itemp.getWidth(null),itemp.getHeight(null),
Color.white,null);
g.dispose();
itemp=image;
}
ImageIO.write((BufferedImage)itemp,"JPEG",newFile(result));//輸出壓縮圖片
}catch(IOExceptione){
e.printStackTrace();
}
}

/**
*裁剪圖片方法
*
*@parambufferedImage
*圖像源
*@paramstartX
*裁剪開始x坐標
*@paramstartY
*裁剪開始y坐標
*@paramendX
*裁剪結束x坐標
*@paramendY
*裁剪結束y坐標
*@return
*/
(BufferedImagebufferedImage,
intstartX,intstartY,intendX,intendY){
intwidth=bufferedImage.getWidth();
intheight=bufferedImage.getHeight();
if(startX==-1){
startX=0;
}
if(startY==-1){
startY=0;
}
if(endX==-1){
endX=width-1;
}
if(endY==-1){
endY=height-1;
}
BufferedImageresult=newBufferedImage(endX-startX,endY-startY,
4);
for(intx=startX;x<endX;++x){
for(inty=startY;y<endY;++y){
intrgb=bufferedImage.getRGB(x,y);
result.setRGB(x-startX,y-startY,rgb);
}
}
returnresult;
}

publicstaticvoidmain(String[]args)throwsIOException{
Fileinput=newFile("input.jpg");
BufferedImageimg=ImageIO.read(input);
cropImage(img,10,10,20,20);
Fileoutput=newFile("output.jpg");
ImageIO.write(img,"jpg",output);
}
}

『捌』 C++如何用GDI+裁剪圖片

Image* FixedSize(Image *imgSrc, int Width, int Height)
{
int w,h;
w = imgSrc->GetWidth ();
h = imgSrc->GetHeight ();
if (w<h) //圖片是豎著的 交換Width和Height
{
Width = Width + Height;
Height = Width - Height;
Width = Width - Height;
}
Bitmap *bmPhoto = new Bitmap(Width, Height);
bmPhoto->SetResolution(imgSrc->GetHorizontalResolution(),imgSrc->GetVerticalResolution());
Graphics grPhoto(bmPhoto);
grPhoto.Clear((ARGB)Color::White);
grPhoto.SetInterpolationMode();
grPhoto.DrawImage(imgSrc,0,0,Width,Height);
return bmPhoto;
}int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num = 0; // number of image encoders
UINT size = 0; // size of the image encoder array in bytes ImageCodecInfo* pImageCodecInfo = NULL; GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1; // Failure GetImageEncoders(num, size, pImageCodecInfo); for(UINT j = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j; // Success
}
} free(pImageCodecInfo);
return -1; // Failure
}

『玖』 MATLAB中如何批量剪裁彩色圖片

MATLAB中如何批量剪裁彩色圖片
答:

使用matlab批量的在圖片中裁剪指定像素大小的圖片,附:matlab代碼

for
k=1:1

p=k;

q=int2str(p);

path='G:\plant數據\P4\1h\';

i=imread(strcat(path,num2str(k),'.tif'));

[I2,rect]
=
imcrop(i,[225,225,575,575]);

%若有一個圖像為i,在matlab中進行如下操作,imcrop的參數為[2,2,2,2]

%代表左上角坐標為[2,2],裁剪的長度2,寬度為2。

figure(1);
imshow(i);

hold
on

x1=rect(1);

x2=rect(2);

w=rect(3);

h=rect(4);

rectangle('Position',[x1,x2,w,h],
'EdgeColor','y');

x3=x1+w;

x4=x2+h;

hold
off

figure(2);
imshow(I2);

imwrite(I2,strcat('G:\plant數據\',num2str(k),'.tif'));

end

熱點內容
機器人編程培訓哪家好 發布:2025-02-09 04:37:44 瀏覽:305
上海怎麼學習java 發布:2025-02-09 04:26:39 瀏覽:20
erp系統搭建備用伺服器 發布:2025-02-09 04:07:38 瀏覽:943
戴爾伺服器在bios怎麼配置管理ip 發布:2025-02-09 04:01:53 瀏覽:548
小魚易連雲存儲 發布:2025-02-09 03:59:47 瀏覽:87
正在限制訪問 發布:2025-02-09 03:47:17 瀏覽:901
架設資料庫 發布:2025-02-09 03:41:29 瀏覽:964
imacpro哪個配置最好 發布:2025-02-09 03:32:29 瀏覽:251
用編程對話 發布:2025-02-09 03:23:43 瀏覽:86
自助解壓球 發布:2025-02-09 03:17:37 瀏覽:319