精华内容
下载资源
问答
  • 本项目是仿微博及猫眼查看图片的动画效果,使用viewpager查看图片放大,可以报道查看当前回到图片位置 ## 图片效果 初始化动画 animationUtils = new AnimationsUtils(container, rlViewPager, viewPager); 触发动画...
  • 开启位置信息拍照的图片,会在图片的头部保存相关位置信息。保存的位置信息可能是按照 118°22′22″ 度分秒的方式,需要

    图片信息都保存在文件头部,以 Exif (Exchangeable image file format 可交换图像文件格式)格式保存,包含图片位置信息。在拍照时如果开启记录位置则可以获取到相应信息。获取代码如下

        fun getPicExif(fileName: String): String {
            val exif = ExifInterface()
            try {
                val inputStream: InputStream = assets.open(fileName)
                exif.readExif(inputStream)
            } catch (e: FileNotFoundException) {
                Log.w(
                    TAG,
                    "Could not find file to read exif: $fileName",
                    e
                )
                return "";
            } catch (e: IOException) {
                Log.w(
                    TAG,
                    "Could not read exif from file: $fileName",
                    e
                )
                return "";
            }
            val latitudeTag = exif.getTag(ExifInterface.TAG_GPS_LATITUDE)
            val longitudeTag = exif.getTag(ExifInterface.TAG_GPS_LONGITUDE)
    
            var value = ""
            if (latitudeTag != null && longitudeTag != null) {
                val latitude = latitudeTag.getValueAsRationals()[0].toDouble()
                val longitude = longitudeTag.getValueAsRationals()[0].toDouble()
                value = "N " + latitude + " E" + longitude;
            }
            Log.i(TAG, "value " + value);
            return value;
        }

    latitudeTag.getValueAsRationals() 获取的是其经纬度坐标,需要注意保存的位置信息可能是按照 118°22′22″ 度分秒的方式保存,那这个数组长度就是3,需要获取数组中所有数据,改进获取数据方式如下:

                Rational[] rLati = latitudeTag.getValueAsRationals();
                Rational[] rLongi = longitudeTag.getValueAsRationals();
                double latitude;
                double longitude;
    
                if (rLati.length == 3) {
                    latitude = (rLati[2].toDouble() / 60 + rLati[1].toDouble()) / 60 + rLati[0].toDouble();
                } else {
                    latitude = rLati[0].toDouble();
                }
    
                if (rLongi.length == 3) {
                    longitude = (rLongi[2].toDouble() / 60 + rLongi[1].toDouble()) / 60 + rLongi[0].toDouble();
                } else {
                    longitude = rLongi[0].toDouble();
                }
    

     

    展开全文
  • qq 查看图片文件所在位置 CreateTime--2018年5月4日08:55:58 Author:Marydon 1.点击右下角+号-->查看原图 2.使用默认图片查看器打开 3.文件-->属性 4.确定该图片所在路径    相关...
     

    qq 查看图片文件所在位置

    CreateTime--2018年5月4日08:55:58

    Author:Marydon

    1.点击右下角+号-->查看原图

    2.使用默认图片查看器打开

    3.文件-->属性

    4.确定该图片所在路径

     

     相关推荐:

     

     
    展开全文
  • 前提:图片传到电脑的时候一定要原图,否则会压缩这些信息。 安卓手机测试通过微信发原图可以保留这些信息。 苹果手机测试通过微信发原图也会去掉这些信息,我是通过邮箱文件中转站传到电脑的,或者直接数据线插上来...

    前提:图片传到电脑的时候一定要原图,否则会压缩这些信息。
    安卓手机测试通过微信发原图可以保留这些信息。
    苹果手机测试通过微信发原图也会去掉这些信息,我是通过邮箱文件中转站传到电脑的,或者直接数据线插上来拷贝。

    代码如下:需要更改里面的图片路径

    import exifread
    import re
    import json
    import requests
    import os
     
    #转换经纬度格式
    def latitude_and_longitude_convert_to_decimal_system(*arg):
        """
        经纬度转为小数, param arg:
        :return: 十进制小数
        """
        return float(arg[0]) + ((float(arg[1]) + (float(arg[2].split('/')[0]) / float(arg[2].split('/')[-1]) / 60)) / 60)
     
    #读取照片的GPS经纬度信息
    def find_GPS_image(pic_path):
        GPS = {}
        date = ''
        with open(pic_path, 'rb') as f:
            tags = exifread.process_file(f)
            for tag, value in tags.items():
                #纬度
                if re.match('GPS GPSLatitudeRef', tag):
                    GPS['GPSLatitudeRef'] = str(value)
                #经度
                elif re.match('GPS GPSLongitudeRef', tag):
                    GPS['GPSLongitudeRef'] = str(value)
                #海拔
                elif re.match('GPS GPSAltitudeRef', tag):
                    GPS['GPSAltitudeRef'] = str(value)
                elif re.match('GPS GPSLatitude', tag):
                    try:
                        match_result = re.match('\[(\w*),(\w*),(\w.*)/(\w.*)\]', str(value)).groups()
                        GPS['GPSLatitude'] = int(match_result[0]), int(match_result[1]), int(match_result[2])
                    except:
                        deg, min, sec = [x.replace(' ', '') for x in str(value)[1:-1].split(',')]
                        GPS['GPSLatitude'] = latitude_and_longitude_convert_to_decimal_system(deg, min, sec)
                elif re.match('GPS GPSLongitude', tag):
                    try:
                        match_result = re.match('\[(\w*),(\w*),(\w.*)/(\w.*)\]', str(value)).groups()
                        GPS['GPSLongitude'] = int(match_result[0]), int(match_result[1]), int(match_result[2])
                    except:
                        deg, min, sec = [x.replace(' ', '') for x in str(value)[1:-1].split(',')]
                        GPS['GPSLongitude'] = latitude_and_longitude_convert_to_decimal_system(deg, min, sec)
                elif re.match('GPS GPSAltitude', tag):
                    GPS['GPSAltitude'] = str(value)
                elif re.match('.*Date.*', tag):
                    date = str(value)
        return {'GPS_information': GPS, 'date_information': date}
     
    #通过baidu Map的API将GPS信息转换成地址。
    def find_address_from_GPS(GPS):
        """
        使用Geocoding API把经纬度坐标转换为结构化地址。
        :param GPS:
        :return:
        """
        secret_key = 'zbLsuDDL4CS2U0M4KezOZZbGUY9iWtVf'
        if not GPS['GPS_information']:
            return '该照片无GPS信息'
        lat, lng = GPS['GPS_information']['GPSLatitude'], GPS['GPS_information']['GPSLongitude']
        baidu_map_api = "http://api.map.baidu.com/geocoder/v2/?ak={0}&callback=renderReverse&location={1},{2}s&output=json&pois=0".format(
            secret_key, lat, lng)
        response = requests.get(baidu_map_api)
        content = response.text.replace("renderReverse&&renderReverse(", "")[:-1]
        print(content)
        baidu_map_address = json.loads(content)
        formatted_address = baidu_map_address["result"]["formatted_address"]
        province = baidu_map_address["result"]["addressComponent"]["province"]
        city = baidu_map_address["result"]["addressComponent"]["city"]
        district = baidu_map_address["result"]["addressComponent"]["district"]
        location = baidu_map_address["result"]["sematic_description"]
        return formatted_address,province,city,district,location
    if __name__ == '__main__':
        GPS_info = find_GPS_image(pic_path='./1.jpg')
        address = find_address_from_GPS(GPS=GPS_info)
        print("拍摄时间:" + GPS_info.get("date_information"))
        print('照片拍摄地址:' + str(address))
    

    测试结果:

    展开全文
  • 仿QQ空间根据点击图片位置逐步展开过渡到新的界面查看大图
  • 由于工作需要需要编写一个图片查看器,需要支持鼠标滚动缩放大小,鼠标移动图片位置等,由于无法上传gif,截取的gif示例图暂时不上传了,讲一下大概思路 1 鼠标点击移动图片 通过重写鼠标点击事件获取到点位,在...

    由于工作需要需要编写一个图片查看器,需要支持鼠标滚动缩放大小,鼠标移动图片位置等,由于无法上传gif,截取的gif示例图暂时不上传了,讲一下大概思路

    1 鼠标点击移动图片

        通过重写鼠标点击事件获取到点位,在鼠标移动事件中进行move操作,在paintEvent中指定绘制起始点即可, 与QDialog 移动操作一样,代码如下

    //mousePressEvent

    void PicShowDlg::mousePressEvent(QMouseEvent *event)
    {
    	QDialog::mousePressEvent(event);
    	if (this->rect().contains(event->pos()))
    	{
    		QPoint p(m_pix.rect().x(),m_pix.rect().y());
    		QSize size =  m_pix.size();
    		m_dPixTempPos = event->globalPos() - m_dPixPos;
    	}
    }

    //鼠标移动事件

    void PicShowDlg::mouseMoveEvent(QMouseEvent *event)
    {
    	QDialog::mouseMoveEvent(event);
    	if (this->rect().contains(event->pos()))
    	{
    		m_dPixPos = event->globalPos() - m_dPixTempPos;
    	}
    }

    2 放大缩小图片

      通过重写滚轮事件,通过滚动设置比例系数,在paintEvent中重新计算缩放后的图片大小

    //鼠标滚轮事件

    void PicShowDlg::wheelEvent(QWheelEvent *event)
    {
        if (event->delta() > 0)
    	{
    		m_rate -= 0.1;
    		if (m_rate < 0.018)
    			m_rate = 0.01;
    	}
    	else if (event->delta() < 0 )
    	{
    		m_rate += 0.1;
    		if (m_rate >4.5)
    		{
    			m_rate = 5;
    		}
    	}
    	update();
    	return QDialog::wheelEvent(event);
    }
    // paintEvent 事件重新
    
    void PicShowDlg::paintEvent(QPaintEvent *event)
    {
    	QDialog::paintEvent(event);
    	QPainter p(this);
    	int nH = m_pix.height()*m_rate;
    	int nW = m_pix.width()*m_rate;
    	QPixmap newPix = m_pix.scaled(nW,nH,Qt::KeepAspectRatio,Qt::SmoothTransformation);
    	p.drawPixmap(QRect(m_dPixPos.rx()-(nW - m_pix.width())/2,m_dPixPos.ry()-(nH - m_pix.height())/2, newPix.width(),newPix.height()), newPix);
    	update();
    }

     

     

    picShowDlg类完整代码

    .h文件

     

    #pragma once
    
     
    #include <QDialog>
    #include <QPixmap>
    #include <QPoint>
    #include "ui_PicShowDlg.h"
    class PicShowDlg:public QDialog
    {
    public:
    	explicit PicShowDlg(QWidget *parent = nullptr);
    	~PicShowDlg();
    	void SetPix(const QPixmap& pix );
    	void SetPix(const QString &strFile);
    
     
    protected:
    	virtual void paintEvent(QPaintEvent *event) override;
    	virtual void mousePressEvent(QMouseEvent *event) override;
    	virtual void mouseMoveEvent(QMouseEvent *event) override;
    	virtual void wheelEvent(QWheelEvent *event) override;
    	virtual void resizeEvent(QResizeEvent *event) override;
    private:
    	Ui::PicShowDlg *ui;
    	QPixmap m_pix;
    	//QRect m_paintRect;
    	QPoint m_dPixTempPos;
    	QPoint m_dPixPos;
    	double m_rate;
    };
    .cpp文件
    
    #include <QPainter>
    #include <QMouseEvent>
    #include <QDesktopWidget>
    #include "PicShowDlg.h"
    
     
    PicShowDlg::PicShowDlg(QWidget *parent)
    	:QDialog(parent)
    	,ui(nullptr)
    	, m_rate(1)
    {
    	ui = new Ui::PicShowDlg;
    	ui->setupUi(this);
    	this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint);
    	this->setModal(false);
    	this->show();
    }
    
     
    PicShowDlg::~PicShowDlg()
    {
        if(ui != nullptr)
        {
            delete ui;
            ui = nullptr;
        }
    }
    
     
    void PicShowDlg::SetPix(const QPixmap& pix)
    {
    	m_pix = pix;
    	this->resize(m_pix.size());
    }
    
     
    void PicShowDlg::SetPix(const QString &strFile)
    {
    	m_pix.load(strFile);
    	this->setWindowTitle(strFile);
    	if (m_pix.height() > QApplication::desktop()->height() -300)
    	{
    		this->resize(m_pix.size() + QSize(300,0));
    	}
    	else if(m_pix.width() > QApplication::desktop()->width() - 400)
    	{
    		this->resize(m_pix.size() + QSize(0, 200));
    	}
    	else
    	{
    		this->resize(m_pix.size() + QSize(300, 200));
    	}
    }
    
     
    void PicShowDlg::paintEvent(QPaintEvent *event)
    {
    	QDialog::paintEvent(event);
    	QPainter p(this);
    	int nH = m_pix.height()*m_rate;
    	int nW = m_pix.width()*m_rate;
    	QPixmap newPix = m_pix.scaled(nW,nH,Qt::KeepAspectRatio,Qt::SmoothTransformation);
    	p.drawPixmap(QRect(m_dPixPos.rx()-(nW - m_pix.width())/2,m_dPixPos.ry()-(nH - m_pix.height())/2, newPix.width(),newPix.height()), newPix);
    	update();
    }
    
     
    void PicShowDlg::mousePressEvent(QMouseEvent *event)
    {
    	QDialog::mousePressEvent(event);
    	if (this->rect().contains(event->pos()))
    	{
    		QPoint p(m_pix.rect().x(),m_pix.rect().y());
    		QSize size =  m_pix.size();
    		m_dPixTempPos = event->globalPos() - m_dPixPos;
    	}
    }
    
     
    void PicShowDlg::mouseMoveEvent(QMouseEvent *event)
    {
    	QDialog::mouseMoveEvent(event);
    	if (this->rect().contains(event->pos()))
    	{
    		m_dPixPos = event->globalPos() - m_dPixTempPos;
    	}
    }
    
     
    void PicShowDlg::wheelEvent(QWheelEvent *event)
    {
        if (event->delta() > 0)
    	{
    		m_rate -= 0.1;
    		if (m_rate < 0.018)
    			m_rate = 0.01;
    	}
    	else if (event->delta() < 0 )
    	{
    		m_rate += 0.1;
    		if (m_rate >4.5)
    		{
    			m_rate = 5;
    		}
    	}
    	update();
    	return QDialog::wheelEvent(event);
    }
    
     
    void PicShowDlg::resizeEvent(QResizeEvent *event)
    {
    	this->move((QApplication::desktop()->width() - event->size().width())/2,(QApplication::desktop()->height() - event->size().height())/2);
    	m_dPixPos = QPoint((event->size().width() - m_pix.width())/2,(event->size().height() - m_pix.height())/2);
    	update();
    }
    
    工程代码链接 
    

    https://download.csdn.net/download/i7891090/11975504

    展开全文
  • 仿QQ空间图片放缩查看,点击图片从原位置放大到全屏,后退从全屏缩小到原位置,效果非常好.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • html + 原生javascript简单实现 点击图片位置进行 缩放查看功能
  • jfreechart-改变图片存储位置-客户端jsp页面查看服务器绘图
  • 再次点击时,图片缩小,并回到原来的位置。当然了,在大图界面下,多图的话可以滑动。 其中在动画方面,我一开始用的是Rebound,后来放弃改为属性动画,缩放我使用的是zoomImageView,滑动方面用的是...
  • 有两种可以查看图片的方式,一种是push跳转页面查看,还有一种是点击图片放大,在点击可以还原到原位置的查看方式
  • 图片的所有像素值都设置为同一个值: from matplotlib import pyplot as plt import pylab img[:,:,:] = [250, 230, 201] print img[12, 12] # 查看point(12,12)的像素值 plt.imshow(img, 'img') pylab....
  • html如何调整图片位置

    千次阅读 2021-03-27 09:56:48
    html如何调整图片位置 1、可以使用background-position属性设置图片位置,具体的方法是,首先用hbuilder软件新建一个html文件,文件的head标签中设置输入style标签: 2、然后设置body的样式,给body加一张图片,...
  • 点击图片某处就可以查看该位置放大后的效果 放大镜查看图片
  • 查看网络图片的地址

    千次阅读 2017-11-23 13:33:38
    鼠标右键一般都会弹出几个选择,直接选择复制,有些是不同的可以选择选择复制图像地址(o) 这样就复制到...有些是有查看图片信息的,这个和点进去图片的界面有关系, 图片信息如下图 ,下面的位置就是图片的地址。
  • 查看代码注释中图片位置,如下图Flux.then中依赖图片doc-files/marbles/thenForFlux.svg,即在Flux的对应的package下寻找对应的目录及文件(需在源码中查看) 二、下载源码 下载对应的maven依赖的源码(第二个红框...
  • 图片查看器C#版

    2020-06-24 10:30:37
    一个C#毕业设计完整源码+文档:图片查看器,由广东交通职业技术学院计算机工程学院学生所编写。本图片浏览器是一款集动态图片查看,音乐视听,截图抓屏、图片简单滤镜处理等功能与一体的图片...图片的显示位置及方式。
  • 手机原图查看位置.py

    2020-05-24 14:04:41
    一个可以通过python读取图片位置信息的代码,图片必须是原图,并不是所有图片都能读取,如果图片不包涵位置信息则无法读取
  • 查看图片像素值

    千次阅读 2019-10-31 20:29:29
    img= cv2.imread('290.png') #定义图片位置 #img= cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #转化为灰度图 因为我读取的直接是灰度标签图片就不用转化了 def onmouse(event, x, y, flags, param): #标准鼠标交互函数 ...
  • 图片局部查看效果

    2019-07-02 09:23:16
    主要用途就是两张尺寸一样,内容不同的图片,然后可以局部查看不同图片的相同位置,实现方式主要有div和canvas,感兴趣的可以看下面的文章: 文章地址: 图片局部查看效果 ...
  • 这是一款可以实现支持查看网页的图片功能,该功能是通过网页视图加载网页,然后结合 JS 代码实现点击网页中图片,让图片从最初位置动画过渡到全屏显示图片,大家可以参考吧,希望功能帮助到大家。
  • 如何查看Windows 桌面壁纸的位置

    千次阅读 2019-09-12 15:19:05
    原文地址:如何查看Windows ...有3个位置:默认系统壁纸的位置、主题壁纸图片位置、系统主题文件位置。 1、系统壁纸位置 %windir%\Web\Wallpaper 2、主题壁纸图片位置 %userprofile%\AppData\Local\Microsoft\W...
  • 安装完成之后可以通过pip list 命令查看是否已安装 2、在python文件开始位置引入pil库 from PIL import Image from PIL import Image, ImageDraw, ImageFont 3、定义图片 新建图片 # 新建一张宽高都为200,底色为...
  • Android webview图片点击事件 查看图片

    千次阅读 2016-11-23 09:09:18
    思路:1.webview与js交互;...通过x、y坐标的位置,使用js方法获得图片地址 ,完成点击事件;优点:点击事件是通过webview实现,而html只需要获取图片的地址。代码public class MainActivity extends Activity
  • 因为Ubuntu自带且默认的图片查看工具Shotwell Viewer并不是很好用(比如不能删除当前正在查看图片文件)。 所以需要另一款还可以的图片查看器:nomacs。 并不是说这个工具最好,只是现阶段它可以满足我的需求。 更多...
  • 图片打码服务,要求对图像验证码进行切图,即具体知道像素的位置,网上搜了yhb-chi但下载不方便。 就想着看看mspaint可不可以,将图片拖到mspaint中: 显示了整张图片的像素大小(100X45)和文件大小 操作: 1....
  • 打开图片所在网页;鼠标移至空白处,右击选择检查 选中下图鼠标所在位置按钮, 然后鼠标移至需要查看图片上;如图,就会有图片的宽(width)高(height) ...
  • 下方都看的是我的学习上课程图片大小来进行定位及大小查看,我们想获得我的学习课程图片这里的推荐大小该如何从“PC”和“手机端”分别查看呢?以哪个为主呢? 下1为PC端图片比例查看,2为手机端图片比例查看,PC端...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,729
精华内容 1,091
关键字:

查看图片位置